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