すべてTypeScriptにしたい。テストも。
TypeScriptでの開発に慣れてくると、すべてTypeScriptで記述したくなります。
テストもTypeScriptで書きたいです。
実行環境:karma、テスティングフレームワーク:jasmineの一般的(?)な組み合わせの場合について調べてみました。
1.型定義ファイルのインストール
Nugetから以下のパッケージをインストールする。
AngularJSの型定義ファイルを使用する場合は、これのインストールは不要。(angular-scenario.d.tsとの定義重複エラーが大量に発生します。)
install-package karma-jasmine.TypeScript.DefinitelyTyped
2.TypeScriptのプリプロセッサパッケージをインストール
karma-typescript-preprocessor という名前がズバリなこのパッケージを使う。(仕組みとかは全然見てないんですけど、とりあえずインストール&設定したら使えました。。)
2-1.パッケージのインストール
https://github.com/sergeyt/karma-typescript-preprocessor このパッケージをインストールする。
npm install -g karma-typescript-preprocessor
2-2.設定ファイルの書き換え
karmaの設定ファイルにプリプロセッサ情報を追記する。
- filesにtsファイルを追加する。
- 型定義ファイル(.d.ts)に対応する実装ファイル(.js)もfilesに追加する必要あり。
- プリプロセッサの設定を追加する。
karma.conf.js
// ~~ 略 ~~
files: [
"../underscore.js",
"../myts/*.ts",
"*.ts"
],
preprocessors: {
'../myts/*.ts': ['typescript'],
'*.ts': ['typescript']
},
// ~~ 略 ~~
3.テストの記述
referenceが不要みたい。やった!
テスト書いたらあとはkarma実行するだけ。
hoge-test.ts
describe("テストサンプル", () => {
it("TypeScript定義クラスが利用できる。", () => {
var h = new File1.Hoge("ほげ", 110);
expect(h.getHogege()).toBe("ほげ 110");
});
it("外部の有名ライブラリも利用できる", () => {
_.each([1, 2], (i: number) => {
expect(1).toBe(1);
});
});
});