mocha是一个javascript的测试框架,chai是一个断言库,两者搭配使用更佳,所以合称“抹茶”(其实mocha是咖啡)。“抹茶”特点是: 简单,node和浏览器都可运行。chai提供了三个断言方式 chai官网
BDD:Behavior Driven Development,行为驱动开发,注重测试逻辑TDD:Test-Driven Development,测试驱动开发,注重输出结果
三种断言的简单用法
const { should, expect, assert } = require('chai')
const { add, mul } = require('./sum')
// should需要提前调用一下
should()
add(4, 5).should.equal(9)
expect(add(1, 4)).equal(5)
expect(mul(2, 3)).equal(6)
assert.equal(add(4, 6), 10)
Mocha
Mocha是一个功能丰富的JavaScript测试框架,可以运行在 node 和浏览器上,使异步测试变得简单而有趣。Mocha在运行测试用例过程中,当捕获到错误时,依旧能够灵活地运行精确的报告。mocha 默认的模式是 BDD。
官网:mochajs.org/
安装
npm i mocha -D
// package.json
"scripts": {
...
"test": "mocha test/mocha.js",
...
},
基本用法
describe('#match', () => {
describe('add', () => {
it('should return 5 when 2 + 3', () => {
expect(add(2, 3), 5)
})
// it.only 只执行这条case
// it.skip 跳过这条case
it('should return 8 when 5 + 3', () => {
expect(add(5, 3), 8)
})
})
describe('mul', () => {
it('should return 12 when 4 * 3', () => {
expect(mul(4, 3), 12)
})
})
})
describe是可嵌套的,描述测试用例是否正确。
it(info, function)info为描述性说明。一个it对应一个单元测试用例。
expect(mul(4, 3), 12) chai断言的方式
输出结果
only()、skip()函数
describe 块和 it 块都允许调用 only() 和 skip() 方法。
only() 方法表示在当前的父 describe 块下,只执行该单元的测试。
skip() 方法表示在当前的父 describe 块下,跳过不执行该单元的测试。
当在一个 describe 块下,同时存在 only() 和 skip() 方法,则只执行 .only() 方法。
常用命令参数
--recursive 遍历子目录下的全部文件
Mocha 默认运行 /test 子目录里面的测试脚本。
Mocha默认只执行 /test 子目录下第一层的测试用例。
所以,应加上– recursive 参数,使全部子目录下的测试用例都能被执行。
mocha --recursive
-u tdd 执行 TDD 模式
mocha默认的模式是 BDD ,要想执行 TDD 的 test 时需要加上参数,如:
mocha -u tdd test.js
--watch, -w 监听脚本变化
--watch 参数用来监视指定的测试脚本。当脚本发生变化,就会自动运行mocha。
mocha --watch
--bail, -b 参数指定只要有一个测试用例没有通过,就停止执行后面的测试用例。这对持续集成很有用。
mocha --bail
-timeout, -t 指定超时门槛
Mocha默认每个测试用例最多执行2000毫秒。如果2000毫秒后还没有执行完成,则报错。-t可执行超时门槛。
mocha -t 5000 test.js