2013-08-23 20 views
5

TypeScriptが新しく、TypeScriptコードベースのユニットテストをセットアップしようとしています。問題は私のコードが他人の仕事に依存し、これらの参照はすべて "...... \ somefile.d.ts"のようなハードコードされた相対パスの形で行われることです。単体テストになったら、いくつかの依存関係を偽造したいのですが、TypeScriptがハードコードされた参照ファイルの代わりに私のFakeをどう使うかを知らないのです。typescriptのファイル参照を改善する

私の質問です:ソースコードの参照パスをハードコーディングしない方法がありますか? TypeScriptにプリプロセッサやマクロのようなものがあるのですか、それともソースコードでハードコーディングするのではなく、依存関係を解決するためにプロジェクトシステムを使用できますか?

答えて

4

作男-TS参照ファイルの生成をチェックしてください:あなたは何ができるかhttps://github.com/basarat/grunt-ts#reference-file-generation

は別々のターゲット、DEV用とテストのための1つを持っていることである。

dev: {       
     src: ["app/**/*.ts", "!app/**/*.spec.ts"], // Exclude your spec files 
     reference: "./app/reference.ts", 
     out: 'app/out.js',   
    }, 
    test: {       
     src: ["app/**/*.ts"], // Include all files 
     reference: "./app/reference.ts", 
     out: 'app/out.js',   
    }, 

今、あなただけのすべてからapp/reference.tsを参照あなたのファイル。テストを実行したいときは、テストのためにビルドします.developをビルドするときに使います。

また、このビデオチュートリアルをチェックアウト:代わりに別のファイルをロードするhttp://www.youtube.com/watch?v=0-6vT7xgE4Y&hd=1

+0

Node.jsは私たちの作業環境には存在しません。私は、すべての依存関係を持つreference.tsファイルを手動で生成し、すべてのソースコードでこのファイルを参照することを考えました。しかし、まだ私のコントロール下にない共有ファイルがいくつかあり、私はこのアプローチを使ってファイルを修正することはできません。 –

3

を、あなたはテスト実装のための実装を交換するために、テストやスパイフレームワークを使用して検討していますか?

TypeScriptプロジェクトでは、依存関係を偽造するためにジャスミンスパイ(https://github.com/pivotal/jasmine/wiki/Spieshttp://tobyho.com/2011/12/15/jasmine-spy-cheatsheet/)を使用しました。メインソースコードを通常どおりにロードしてから、createSpyObj関数とspyOn関数を使用して、テストファイルで定義された新しいTypeScriptの依存関係を置き換えました。

この方法を使用すると、メインソースコードやパスを変更する必要はありません。すべてがテストファイルで行われます。

関連する問題