Chai容許開發人員選擇最溫馨的接口進行測試語句的編寫。具備鏈式功能的BDD風格提供了富有表現力的語言和可讀風格,如expect
或者should
;而TDD斷言風格則提供了更爲經典的感受,如assert
。node
npm i mocha chai -S -D
function add(x, y) { return x + y; } module.exports = add;
var add=require('../src/add.js'); var expect=require('chai').expect;
describe('add_test1',function(){ it('1+1=2',function(){ expect(add(1,1)).to.be.equal(2); }); it('1+1!=3',function(){ expect(add(1,1)).to.be.not.equal(3); }) })
上面這段代碼,就是測試腳本,它能夠獨立執行。測試腳本里面應該包括一個或多個describe塊,每一個describe塊應該包括一個或多個it塊。express
describe塊稱爲"測試套件",表示一組相關的測試。它是一個函數,第一個參數是測試套件的名稱(「add_test1」),第二個參數是一個實際執行的函數。npm
it塊稱爲"測試用例",表示一個單獨的測試,是測試的最小單位。它也是一個函數,第一個參數是測試用例的名稱(「1+1=2」),第二個參數是一個實際執行的函數json
scripts: { "test": "mocha" }
npm run mocha
運行了上述代碼後,會自動運行 /test/*.test.js 文件,獲得以下結果app
啓動一個node服務框架
//app.js const express = require('express'); const app = express(); app.get('/', function (req, res) { res.status(200).json({ name: '1234' }); }); app.listen(8080); module.exports = app;
使用supertest模擬http請求函數
//test.js const app = require('../src/app'); const request = require('supertest'); describe('app', function () { it('/', function (done) { request(app) .get('/') .expect('Content-Type', /json/) .expect('Content-Length', "15") .expect(200) .end(done); }); });