TypeScript
mocha
Sinon.JS
power-assert
espower-typescript

TypeScript + mocha + power-assert-js + Sinon.JS テスト環境メモ

More than 1 year has passed since last update.

導入

ライブラリ

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

http://mochajs.org/

単体テスト用ライブラリ。describe(),it()とか書ける。

power-assert-js

https://github.com/power-assert-js/power-assert

出力がみやすいassertライブラリ。
assert.deepEqual(a, b)による配列やオブジェクトの比較出力が強力。

5分ぐらいでわかるpower assert

espower-typescript

https://github.com/power-assert-js/espower-typescript

power-assert-jsのTypeScriptむけプラグイン。tsを自動でコンパイルしてくれる。

[2016-01-11追記]tsc1.6以降で,Cannot read property 'text' of undefinedというエラーが出る場合は、v2系をインストールすると回避できる。 原因

Sinon.JS

http://sinonjs.org/

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でないといけない。
    • privateprotectedではダメ
    • 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