一、安装
使用npm全局安装:
npm i mocha -g
也可以作为项目的依赖进行安装:
npm i mocha -D
二、开始编辑
创建test文件夹,在文件夹内创建test.js测试文件:
mkdir test
cd test
touch test.js
将代码写入test.js文件中:
var assert = require('assert')
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal(-1, [1, 2, 3].indexOf(4))
})
})
})
describe('assert', function () {
it('a和b应当深度相等', function () {
var a = {
c: {
e: 1
}
}
var b = {
c: {
e: 1
}
}
assert.deepEqual(a, b)
})
it('可以捕获并验证函数fn的错误', function () {
function fn() {
xxx;
}
assert.throws(fn)
})
})
三、运行
package.json文件写入:
"scripts": {
"test": "mocha"
}
运行:
npm run test
四、运行结果
五、测试脚本解析
测试脚本里面应该包括一个或多个describe块,每个describe块应该包括一个或多个it块。
1、describe块称为"测试套件"(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称,第二个参数是一个实际执行的函数。
2、it块称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称,第二个参数是一个实际执行的函数。
六、断言
mocha支持任何可以抛出一个错误的断言模块。例如:should.js、better-assert、expect.js、unexpected、chai等这些断言库各有各的特点,根据使用场景来选择断言库。
上面例子里使用的断言库使用的是node的内置模块assert。下面为asser常用函数:
assert.ok(value[, message]):测试参数value是否为true。eg:
assert.ok(0,'is wrong')
//AssertionError [ERR_ASSERTION]: is wrong
assert.equal(actual, expected[, message]):判断实际值actual和期望值expected是否相等。eg:
assert.equal(1, "2","This test is wrong");
//AssertionError [ERR_ASSERTION]: This test is wrong
assert.deepEqual(actual, expected[, message]):执行深度比较,判断实际值actual和期望值expected是否相等。eg:
let list1 = [1, 2, 3, 4, 5];
let list2 = [1, 2, 3, 4, 5];
assert.deepEqual(list1, list2, '预期两个数组应该有相同的属性');
assert.throws(block[, error][, message]):声明一个block用来抛出错误(error),error可以是构造函数,正则表达式或其他验证器。eg:
assert.throws(
function() {
throw new Error("Wrong value");
},
Error,
'不符合预期的错误类型'
);