mocha+chai使用记录
mocha+chai
是比较流行的测试框架‘套装’,能实现一些基本的前端测试如函数功能测试,模拟登陆,异步测试,流程测试等
官方文档
mocha
chai
基本用法
mocha
是一个测试工具库,它只纯粹对测试行为(过程)进行描述;而chai
是一个断言(推断)库,它可以将测试结果进行各种判断,以此推断是否符合预期,因此两者常常进行组合使用
安装
1 | //全局安装 |
ps: 全局安装之后,mocha
命令将会在全局注册,可以在任何地方使用mocha
命令
1 | //安装项目依赖 |
使用
目录结构
1 | ├── test //测试用例 |
所有测试代码都在test目录,所有的业务代码都在src目录
一个简单的例子
1 | //src/add.js |
1 | //test/unit/add.js |
1 | $ mocha mocha/unit/add |
Expect/Should/Assert
The Expect / Should API covers the BDD assertion styles.
The Assert API covers the TDD assertion style.
异步
- 非
promise
异步一定要带上done()
,用于通知mocha
该测试已经完成 - 异步通常和参数
-t
结合一起用
通配符
1 | //test/unit目录下add.js和minus.js |
mocha
支持shell
和node
的通配符匹配规则,更多通配符规则可以查看各自的文档
命令行参数与配置文件mocha.opts
常用的命令行
- –recursive
Mocha
默认不对指定目录的子级目录匹配,如果需要使自己目录的测试用例运行,则需要加上--recursive
- –reporter
输出报告的格式,默认是--reporter spec
,可以用--reporters
命令查看有哪些输出格式
- –watch
监听变化,每次修改自动执行test
- –timeout -t
Mocha
默认每个测试用例最多执行2000
毫秒,如果到时没有得到结果,就报错。对于涉及异步操作的测试用例,这个时间往往是不够的,需要用-t
或--timeout
参数指定超时门槛
- –hlep,-h
查看有哪些命令mocha.opts
放在test
目录下,执行mocha
命令时回去读取里面的配置
命令行参数可以写在mocha.opts
文件内,如
1 | $ mocha --reporter tap --recursive -t 3000 |
等价于test/mocha.opts
文件内容
1 | --reporter tap |
1 | $ mocha |
hooks(钩子)
1 | describe('hooks', function() { |
可以写在测试用例内(每个describe
块内),此时只对当前测试用例有效
也可以写在外部,此时对所有的测试用例有效
注意
- 内置
promise
对象 ES6
需要转码