Mocha
Mocha 是一套 JavaScript 的測試 framework。透過 npm 安裝:npm install mocha --save範例:
const math_utils = require ('./math_utils')
it('add two numbers', () => {
var res = math_utils.add(1, 2);
if (res !== 3) {
throw new Error(`Expected 3, but got ${res}.`);
}
});
it('add two numbers', () => {
var res = math_utils.add(1, 2);
if (res !== 4) {
throw new Error(`Expected 4, but got ${res}.`);
}
});
然後透過修改 package.json 來增加測試的腳本:
{
...
"scripts": {
"test": "mocha **/**.test.js"
},
...
}
之後在 console 上執行:npm test就可以看到 test 的結果如圖1,有一個成功一個失敗。
有了 Expect,我們就可以把上面的範例改寫成:
const expect = require ('expect')
const math_utils = require ('./math_utils')
it('add two numbers', () => {
var res = math_utils.add(1, 2);
expect(res).toBe(3);
});
it('add two numbers', () => {
var res = math_utils.add(1, 2);
expect(res).toNotBe(4);
});
GitHub 的文件有更多的範例可以參考。非同步的測試 Testing Asynchronous Code
const expect = require ('expect')
const math_utils = require ('./math_utils')
it('add two numbers', () => {
var res = math_utils.addAsync(1, 2, (sum) => {
expect(sum).toBe(4);
});
上面的測試是會成功 pass 的,因為 Mocha 跑完 addAsync 就結束了,根本沒有等 callback 回來,所以為了告訴 Mocha 等待,必須使用 done:const expect = require ('expect')
const math_utils = require ('./math_utils')
it('add two numbers', (done) => {
var res = math_utils.addAsync(1, 2, (sum) => {
expect(sum).toBe(4);
done();
});
這樣就可以讓此測試預期是失敗的。SuperTest
SuperTest 是一套用來測試 HTTP Request 的 Assertion Library。
npm install supertest --save

