Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
39
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

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

導入

ライブラリ

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)による配列やオブジェクトの比較出力が強力。

5分ぐらいでわかるpower assert

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でないといけない。
    • 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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
39
Help us understand the problem. What are the problem?