1. 程式人生 > >Mocha和SuperTest聯合測試WebApi

Mocha和SuperTest聯合測試WebApi

華麗的目錄

最終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!!

引用連結

  1. 口袋程式碼倉庫
  2. 線上計算器
  3. 本節原始碼:github