標籤:lan under 出錯 png rgs 支援 技術 多個 用例
參考大神阮一峰的文章《測試架構 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); }); });});
Nodejs Mocha測試學習