前端單元測試入門1


1. 單元測試

1.1 TDD 測試驅動開發

  • TDD指的是Test Drive Development,很明顯的意思是測試驅動開發,也就是說咱們能夠從測試的角度來檢驗整個項目。
  • 大概的流程是先針對每一個功能點抽象出接口代碼,而後編寫單元測試代碼,接下來實現接口,運行單元測試代碼,循環此過程,直到整個單元測試都經過。

1.2 BDD 行爲驅動開發

  • BDD指的是Behavior Drive Development,也就是行爲驅動開發。
  • 在TDD中,咱們並不能徹底保證根據設計所編寫的測試就是用戶所指望的功能。
  • BDD將這一部分簡單和天然化,用天然語言來描述,讓開發、測試、BA以及客戶都能在這個基礎上達成一致。

2. 測試工具

2.1 使用 mocha 完成一個簡單的測試用例

2.1.1 安裝

Chai容許開發人員選擇最溫馨的接口進行測試語句的編寫。具備鏈式功能的BDD風格提供了富有表現力的語言和可讀風格,如expect或者should;而TDD斷言風格則提供了更爲經典的感受,如assertnode

npm i mocha chai -S -D

2.1.2 頁面結構

clipboard.png

2.1.3 add.js

function add(x, y) {
   return x + y;
}

module.exports = add;

2.1.4 在測試文件mocha.js中先引入add方法和chai的expect方法

var add=require('../src/add.js');
var expect=require('chai').expect;

2.1.5 而後書寫測試腳本

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

2.1.6 在package.json的scripts中添加mocha

scripts: {
    "test": "mocha"
}

2.1.7 運行test文件

npm run mocha

運行了上述代碼後,會自動運行 /test/*.test.js 文件,獲得以下結果app

clipboard.png

2.2 supertest

啓動一個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);
    });
});
相關文章
相關標籤/搜索