mocha是一款功能丰富的javascript单元测试框架,它既能够运行在nodejs环境中,也能够运行在浏览器环境中。javascript是一门单线程语言,最显著的特色就是有不少异步执行。同步代码的测试比较简单,直接判断函数的返回值是否符合预期就好了,而异步的函数,就须要测试框架支持回调、promise或其余的方式来判断测试结果的正确性了。mocha能够良好的支持javascript异步的单元测试。mocha会串行地执行咱们编写的测试用例,能够在将未捕获异常指向对应用例的同时,保证输出灵活准确的测试结果报告。javascript
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))
})
})
})
复制代码
在终端中运行后如出现下面结果则为经过:html
Array
#indexOf()
✓ should return -1 when the value is not present
1 passing (9ms)
复制代码
一个简单的测试包含describe和it,describe声明了一个TestSuit(测试集合) ,并且测试集合能够嵌套管理,而it声明定义了一个具体的测试用例。java
assert为断言库,除了assert还有以下几种,Mocha容许你使用你喜欢的断言库node
首先先引入断言assert模块git
var assert = require('assert');
复制代码
1.assert(value[, message]) assert.ok() 的别名。github
assert.ok(true); 同 assert(true)
// 测试经过。
assert.ok(false, '不是真值'); 同 assert(false, '不是真值')
// 抛出 AssertionError: 不是真值
复制代码
2.assert.equal(actual, expected[, message])npm
assert.equal(1, 1);
// OK, 1 == 1
assert.equal(1, '1');
// OK, 1 == '1'
assert.equal(1, 2);
// AssertionError: 1 == 2
assert.equal({ a: { b: 1 } }, { a: { b: 1 } });
// AssertionError: { a: { b: 1 } } == { a: { b: 1 } }
复制代码
3.assert.fail([message])segmentfault
抛出 AssertionError,并带上提供的错误信息或默认的错误信息。 若是 message 参数是 Error 的实例,则会抛出它而不是 AssertionError。api
const assert = require('assert').strict;
assert.fail();
// 抛出 AssertionError [ERR_ASSERTION]: Failed
assert.fail('失败');
// 抛出 AssertionError [ERR_ASSERTION]: 失败
assert.fail(new TypeError('失败'));
// 抛出 TypeError: 失败
复制代码
nodejs.cn/api/assert.…promise