對TypeScript庫進行單元測試

原文發佈於2017年7月,爲保證能正常運行,其中部分命令進行了調整。

當時TypeScript版本爲2.x,但依舊具備借鑑意義。node

單元測試能限制你庫中Bug的「生長」。隨着編寫的庫愈來愈大,你不能老是手工測試每一個特性。但你能夠使用單元測試來測試每一個特性,而且編寫起來並不難。下面展現如何在Typescript中設置單元測試!typescript

步驟1:安裝用於單元測試的包

單元測試assert(推斷)代碼中一些屬性。例如你有一個方法add(x,y),其應該正確地將xy相加,經過單元測試你能夠進行以下測試assert(add(3,4)).equals(7)shell

一些用於單元測試的庫提供了好用的assert方法來執行測試。咱們這裏使用了MochaChai,經過以下命令進行安裝:npm

npm i mocha @types/mocha chai @types/chai ts-node typescript --save-devjson

步驟2:編寫第一個單元測試

假設你有如下單元:單元測試

typescript-library/src/math.ts測試

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

那對應的單元測試多是這樣的:ui

typescript-library/src/math.test.tsspa

import { add } from './math';

import * as mocha from 'mocha';
import * as chai from 'chai';

const expect = chai.expect;
describe('My math library', () => {

  it('should be able to add things correctly' , () => {
    expect(add(3,4)).to.equal(7);
  });

});

步驟3:運行單元測試

您能夠使用如下命令運行測試:code

./node_modules/mocha/bin/mocha --reporter spec --require ts-node/register src/**/*.test.ts

而後應該會在控制檯中看到一個輸出,以下所示:

測試容許輸出

您能夠將這個長命令放入package.json中轉換成"scripts:{"test":"…"}"而後用npm test運行測試。也就是說此時的package.json應該是:

{
  "devDependencies": {
    "@types/chai": "^4.1.7",
    "@types/mocha": "^5.2.7",
    "chai": "^4.2.0",
    "ts-node": "^8.3.0",
    "mocha": "^6.1.4"
  },
  "scripts": {
    "test": "./node_modules/mocha/bin/mocha --reporter spec --require ts-node/register src/**/*.test.ts"
  }
}

若是您想運行單獨的某個單元測試,能夠用./node_modules/mocha/bin/mocha --reporter spec --grep "TestName" --require ts-node/register src/**/*.test.ts。「TestName」能夠是任何的describe值,在本例中就如./node_modules/mocha/bin/mocha --reporter spec --grep "My math library" --require ts-node/register test/**/*.test.ts

相關文章
相關標籤/搜索