導入
ライブラリ
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