Mocha和SuperTest聯合測試WebApi
阿新 • • 發佈:2018-11-16
華麗的目錄
最終Api測試結果
萌生Api測試想法
由於前端的同學一直催促後端的Api進度,並對Api的質量提出質疑,雖然我已經在PostMan中進行了測試,然而測試後並沒有結果可參考,並且由於需要動態獲取Token,沒學會設定變數。考慮到js呼叫api很方便,萌生了採用js呼叫api來做介面檢查。搜尋了下github類庫,果然有
SuperTest這樣的精華類庫存在。
題外話,相關測試的同事已經採用XUnit實現了自動測試,這個… 自己做感覺有點雞肋了,幸虧該測試寫起來不費力,速度快,自用還是槓槓的。
安裝mocha
mocha是nodejs下的自動化測試框架,可以大大簡化非同步測試的複雜度,並且提供相關的報告。
安裝:
npm install --global mocha
呼叫方式
var assert = require('assert'); describe('Array', function() { describe('#indexOf()', function() { it('should return -1 when the value is not present', function() { assert.equal([1,2,3].indexOf(4), -1); }); }); });
特別注意,在windows下如果想敲命令 mocha使得系統執行測試,需要全域性安裝mocha
安裝superTest
superTest是一個Http封裝的測試庫,其簡化了Http的請求和測試。
安裝方式
npm install supertest --save-dev
簡單的例子如下:
const request = require('supertest'); const express = require('express'); const app = express(); app.get('/user', function(req, res) { res.status(200).json({ name: 'john' }); }); request(app) .get('/user') .expect('Content-Type', /json/) .expect('Content-Length', '15') .expect(200) .end(function(err, res) { if (err) throw err; });
shoude類庫安裝
should 類庫是nodejs下的測試斷言庫
安裝
npm install should --save-dev
用法如下:
var should = require('should');
var user = {
name: 'tj'
, pets: ['tobi', 'loki', 'jane', 'bandit']
};
user.should.have.property('name', 'tj');
user.should.have.property('pets').with.lengthOf(4);
// if the object was created with Object.create(null)
// then it doesn't inherit `Object` and have the `should` getter
// so you can do:
should(user).have.property('name', 'tj');
should(true).ok;
someAsyncTask(foo, function(err, result){
should.not.exist(err);
should.exist(result);
result.bar.should.equal(foo);
});
安裝完畢,依賴庫基本安裝完畢,可以開始工作了
在專案目錄建立一個目錄,例如:abc
在abc目錄下建立一個test.js,以及data.js 。
我們的目標是測試一個微服務下的api,理論上這兩個檔案就足夠了。
程式碼參見github
在vs code的命令列執行 mocha,啊哈,一個個api逐步測試,一切OK!!