導入
ライブラリ
npm i mocha power-assert espower-typescript sinon -D
型定義ファイル
tsd query mocha -rosa install
tsd query power-assert -rosa install
tsd query empower -rosa install
tsd query sinon -rosa install
環境内訳
mocha
単体テスト用ライブラリ。describe(),it()とか書ける。
power-assert-js
出力がみやすいassertライブラリ。
assert.deepEqual(a, b)による配列やオブジェクトの比較出力が強力。
espower-typescript
power-assert-jsのTypeScriptむけプラグイン。tsを自動でコンパイルしてくれる。
[2016-01-11追記]tsc1.6以降で,Cannot read property 'text' of undefinedというエラーが出る場合は、v2系をインストールすると回避できる。 原因
Sinon.JS
spy, mock, stubなどassertだけじゃ厳しいところをサポートしてくれるテスト用ライブラリ。
テストコード
- 前提:nodejs環境
- test ディレクトリ以下にtsコードを置く。
- espower-typescriptを導入する事でビルド後のjsファイルが不要。
- テスト対象のtsファイルもコンパイルされるので便利
- tsd.d.tsへリファレンスパス通す
- BDDスタイルなら以下
sample-test.ts
/// <reference path="../typings/tsd.d.ts" />
import * as assert from 'power-assert';
import * as mytest from '../src/mytest';
describe("Some Class", ()=>{
context("someMethod()", ()=>{
it("should return object", ()=>{
const a = mytest.SomeClass.someMethod();
const b = {c:0, d:"abc"};
assert.deepEqual(a, b);
});
});
});
- 基本的なテストはpower-assertで、複雑なものはSinon.JSを併用する
- 各ライブラリの使い方はtsのコードになるだけであとは同じ
テスト対象コード
- 対象のメソッドは
publicでないといけない。 -
privateやprotectedではダメ -
staticは当然OK - ES6方式にexportすると以下
mytest.ts
export namespace mytest{
export class SomeClass{
static someMethod():{c:number, d:string}{
//...
return {c:0,d:"abc"};
}
}
}
コマンド
mocha --compilers ts:espower-typescript/guess test/*-test.ts
--compilersオプションでespower-typescriptが必須
なお-wオプションでwatchもできる。
mocha --compilers ts:espower-typescript/guess -w test/*-test.ts