私は、名前空間を広範囲に使用するフレームワーク内にTypescriptコードを書いています。Node.jsの名前空間を使用するTypescriptコードはどのようにテストしますか?
私はモジュールとして組み込むことになるmocha
のようなテストランナーを使用して、いくつかの単体テストを追加したいと思います。既存のファイルはすべて名前空間で記述されているため、モジュールとしてテストにインポートすることはできません。
/// <reference path=.../>
を使用できますが、参照されるクラスは実際にはコンパイル済みのjsファイルでは定義されません。
--outFile
を使ってみましたが、システムローダーとしてsystemjsを使用する必要がありました。私はこれをやってみましたが、私は実行すると:
mocha --compilers ts:ts-node/register api-test.ts
私はエラーを取得:私は手動でテストコードをコンパイルするtsc
を実行すると
ReferenceError: System is not defined
を、私はSystem.register
への呼び出しを参照していますが、システムのISN実際にファイルにインポート/必要があります。
私が見つけた最も近い例は、このレポです:https://github.com/curran/jspm-mocha-example
それはバベルの代わりに、活字体を使用していますが、正常モカとsystemjsを使用することができるようだ、と私はロードする明示的なコードが表示されませんシステムライブラリ。
アップデート:私はモカへ-r systemjs
オプションを追加しようとした@martinから
。これはSystem
を追加し、参照エラーを解決しました。しかし、次の問題は、Typescriptコンパイラtsc
によって生成されたコードが、モジュール読み込みコード内でテストコードをラップすることになります。モカは今テストを見つけることができないようです。
System.register("tests/foo-test", ["config.js", "assert"], function (exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
var assert;
return {
setters: [
function (_1) {
},
function (assert_1) {
assert = assert_1;
}
],
execute: function() {
describe('testCase', function() {
it('type test', function() {
assert(false);
});
});
}
};
});
@martin -rフラグは役立ちますが、Typescriptコンパイラはmochaからテストを隠しています。 – dragonx