参考大神阮一峰的文章《测试框架 Mocha 实例教程》
目前在使用Nodejs,但写完的程序很容易出错,那怎么办?需要引入单元测试去做基础的测试
目前Nodejs用来做单元测试的工具接触的不多,现在只接触到Mocha,它是用来做单元测试的最好的工具之一。
关于Mocha的基础教程,可以看一下阮一峰老师的博客:测试框架 Mocha 实例教程
=》基本概念:
describe():测试区块,一个测试区块应该包含一个或多个测试区块,测试区块也是可以多层嵌套的
it():测试用例,一个测试区块中应该包含一个或多个测试用例
=》测试用例钩子:
before():在本区块所有测试用例执行之前执行
after():在本区块所有测试用例执行之后执行
beforeEach():在本区块每个测试用例之前执行
afterEach():在本区块每个测试用例之后执行
=》断言库:
chai:Mocha本身没有断言库,chai可以作为Mocha的断言库
chai-as-promise:目前的方法很多都是Promise的方式,这个断言库可以支持到Promise
=》测试用例管理:
only():测试区块和测试用例都支持only方法,如果某个测试区块或测试用例调用了only方法,则在运行单元测试时只运行该测试区块或测试用例
skip():测试区块和测试用例都支持skip方法,如果某个测试区块或测试用例调用了skip方法,则在支行单元测试时会跳过该测试区块或测试用例
only()和skip()共存的时候,only()会把skip()的作用给忽略掉
=》异步测试:
在测试方法异步完成后,调用done()方法,一个it测试实例中只能有一个done()方法
=》重新运行实例
在运行测试实例时,我们可以让一个实例重新执行一定的次数,在describe()和it()中加入this.retries(4);,即可执行4次,但是Mocha不推荐这样的做法
=》动太生成测试用例
var assert = require(‘chai‘).assert; function add() { return Array.prototype.slice.call(arguments).reduce(function (prev, curr) { return prev + curr; }, 0); } describe(‘add()‘, function () { var tests = [ { args: [1, 2], expected: 3 }, { args: [1, 2, 3], expected: 6 } ]; tests.forEach(function (test) { it(‘test adds ‘ + test.args.length + ‘ args‘, function () { var res = add.apply(null, test.args); assert.equal(res, test.expected); }); }); });