參考大神阮一峰的文章《測試框架 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); }); }); });