【nodejs】mocha+chai+nyc基础
前言
- 以前就听说单元测试什么的,没怎么重视,既然这玩意那么多人吹,肯定有好处,再研究看看。
官网
- chai官网文档
- mocha文档。
- chai-http文档
- nyc文档
安装
- 用js的不用装@types。
cnpm i mocha @types/mocha chai @types/chai chai-http nyc -D
package.json配置
- 如果直接执行test配命令mocha,就默认找test文件下的内容,如果需要配置路径:
"test":"mocha -r src/test/*.spec.ts --exit",
- 但是这样不支持typescript,所以还需要加上ts-node/register,这个在mocha官方文档有写。
"test":"mocha -r ts-node/register src/test/*.spec.ts --exit",
- r
是支持es6导入模式。- 默认mocha是执行第一层目录内容,如果需要递归查找,需要加–recursive,要指定顺序,需要–file:
"mocha --recursive --require ts-node/register --file test/helper.spec.ts 'test/**/*.spec.ts' --exit",
- nyc的配置是这样:
"coverage":"nyc --reporter lcov npm run test"
- 可以发现mocha和nyc都像脚本一样按顺序走一遍。
编写测试用例
- 首先测试用例一般有个全局配置:
import chai from 'chai'
import chaiHttp from 'chai-http'
chai.use(chaiHttp)
before(async()=>{//会在所有单元测试前执行
})
beforeEach(async()=>{//在每个单元测试前执行
})
afterEach(async ()=>{//每个单元测试之后执行
})
after(async ()=>{//在所有单元测试后执行
})
- 这里面的函数就有点像生命周期一样。一般是把清库同步库之类的全局操作初始操作写进去。关于这些hook,mocha文档例子比较详细。
- 下面这个例子是测试添加用户接口的:
import app from '../index'
import chai ,{expect} from 'chai'
describe('测试用户模块',()=>{it('添加用户接口',async ()=>{let result = await chai.request(app).post('/user/register').set('Content-Type','application/json').send({username:'444444',password:'444444',confirm:'44444',email:'444444@qq.com'})expect(result).to.have.status(200)expect(result.body).to.have.property('success')expect(result.body).to.have.property('data')expect(result.body.success).to.equal(true)})
})
- chai.request是借助了chai的插件chai-http。其他到底基本上看名字就懂了。具体还要别的需求就看chai官网文档。
代码覆盖率
- 这个就是nyc的用处了,前面package.json配置了nyc后运行它,(首先必须保证测试用例全部通过,否则没用。)然后会生成个文件夹叫coverage。
- 里面有个lcov-report文件夹,有个index.html。打开它,即可看见报告。
- 还是很好玩的。
【nodejs】mocha+chai+nyc基础相关推荐
- vue-cli自动化测试karma + mocha + chai
最近再为团队团队选择可行的测试方案.前端目前是vue-cli技术栈.试着在vue项目添加测试.把测试完整的方案记录下来. vue官网给的例子用的是karma + mocha + chai. karma ...
- [Js_Testing]3分钟学会Mocha+Chai单元测试
目录 什么是单元测试 什么是mocha 常见断言库 什么是chai 介绍 用法: 使用 安装环境 测试框架写法 mocha的使用 本节代码 参考目录 什么是单元测试 单元测试是用来对一个模块.一个函数 ...
- 大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试
一. 前端自动化测试 大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了"人肉测试机",完全没必要自己来.但随着项目体量的增大,许多 ...
- 使用karma+mocha+chai为vue组件库做单元测试
前言 单元测试,这一环节对我们的应用的重要性不言而喻,它能很大程度确保我们项目运行的健壮性.因此,前一段时间,笔者公司要求现有的vue搭建的npm组件库做单元测试.之前,笔者对单元测试做过了解,一直想 ...
- 前端Mocha+Chai单元测试
一. 单元测试 单元测试分为两种: TDD:Test-Driven Development,测试驱动开发,注重输出结果. BDD:Behavior Driven Development,行为驱动开发, ...
- electron的单元测试(基于mocha+chai+karma)
1. 最近有个接手在已有的(electron-vue)的项目中做单元测试,但是基于vue-electron脚手架搭建的项目的electron是2.0.4版本,而最新的electron已经升级到11版本 ...
- [Puppeteer]Puppeteer+Mocha+Chai实现端到端测试
目录 项目 puppeteer实现自动化 知识点补充 Mocha+Chai实现测试 优化代码 本节代码 相关链接 项目 将单元测试框架mocha,断言chai和puppeteer结合起来做端到端测试: ...
- 带你入门nodejs第一天——node基础语法及使用
带你入门nodejs第一天--node基础语法及使用 带你入门nodejs第二天--http 模块化 npm yarm 带你入门nodejs第三天-express路由 带你学习nodejs第四天--身 ...
- 前端单元测试-karma+mocha+chai
一.概念普及 1.单元测试运行环境: 运行环境是集成一系列功能的工具,我们可以通过它来选择"测试框架".自动打开浏览器.查看测试结果等功能.我们可以把它近似的理解为vue的vue- ...
最新文章
- 用Python解“爬动的蠕虫”题
- According to TLD or attribute directive in tag file, attribute value does not accept any expressions
- tensorflow中tf.random_normal和tf.truncated_normal的区别
- C语言学习之通过指针变量输出整型数组a的10个元素
- java jdk API中英文下载
- BURP 测试出 OPTIONS PUT DELETE TRACE 方法
- object-c 运行时显示view没有设置outlet的错误
- css3组件实战--绚丽效果篇
- shell_study
- Git 笔记——如何处理分支合并冲突
- 算法:Gray Code 格雷码
- 工作流引擎厂商有哪些_国内主要工作流厂商分析
- 反射之动态拼接sql字符串
- 打印word模板并预览打印
- Kickoff(上路了)
- python test suite什么意思_如何:在python中设置testsuite
- linux 终止作业任务命令,Linux中作业控制命令
- scala 环境搭建 变量 值 数据类型 元组 表达式块 语句 函数 柯里化 集合 面向对象 隐式转换
- Super Unicode Editor(十六进制编辑器)v3.01中文版
- 电脑键盘部分按键失灵_电脑键盘失灵解决方法 电脑键盘部分失灵解决方法
热门文章
- auto uninstaller 9.3.28下载安装教程
- 内存溢出问题核查与定位
- 好人品的八个标准,你有几个?
- 如何理解CRM软件里的销售机会与线索
- awk】1-awk基础篇(又名UNIX.Shell.awk)
- python 协程可以嵌套协程吗_Python | 详解Python中的协程,为什么说它的底层是生成器?...
- java 加密word_Java 加密和解密PDF文档
- 一款实用免费的日志自动化分析工具
- Windows fatal exception: access violation / Process finished with exit code -1073741819 (0xC0000005)
- Java异常处理流程