2017-11-30 6 views
3

私はJasmineやMochaのようなテストフレームワークを使いたいです。しかし、そうすることは、ntpmを介して@typesライブラリを追加することを意味します。残念ながら、これらはグローバルな名前空間を汚染します。Typescript +ジャスミン/モカ、グローバルタイプはありませんか?

これは、アプリケーションコードを記述する際に、intelisenseがテスト機能を含んでいることを意味します。これはこれまでの世界で最初の問題ですが、それでも私にとっては迷惑です。

*.spec.tsファイルの先頭にライブラリをインポートすることができますが、定義ファイルはモジュールをサポートしていないようです。

モジュールエクスポートを使用するTapeという別のライブラリが見つかりましたが、それはかなり基本的でテスト用のブラウザUIはありません(ブラウザコンソールに表示されます)。

誰にも何か提案がありますか?

答えて

2

可能な解決策の1つは、アプリケーションをコンパイルするtsconfig.json"types": []を追加することです。私のプロジェクトのいくつかは、このように構成されています。

  • srcは、アプリケーション・コードが含まれており、アプリケーションをコンパイルするためのtsconfig.jsonがあり、

  • testは、テストコードが含まれており、テストのための適切なtsconfig.jsonを持っています。

2つのファイルが設定を共有する必要がある場合、私は2つの他の設定ファイルが"extends": "../tsconfig-base"を通って延びていることを、トップレベルtsconfig-base.jsonを持っています。

上記のような構造のプロジェクトを作成した場合、src/tsconfig.json"types": []を追加するだけで、アプリケーションコードからMochaグローバルを隠すことができます。一部のプロジェクトでは、配列が空ではなく、少なくともいくつかのパッケージをリストする必要があることに注意してください。当初、私はそれぞれ、すべてのパッケージ私のアプリケーションが使用していますが、documentationに述べたように、ので、それはそうではないのです"types"に一覧表示しなければならないことを考えた:

@typesパッケージの自動含めることを無効にするには"types": []を指定します。

自動宣言は、(モジュールとして宣言されたファイルではなく)グローバル宣言付きのファイルを使用している場合にのみ重要です。 たとえば、import "foo"ステートメントを使用する場合、TypeScriptはnode_modules & node_modules/@typesのフォルダを見て、fooパッケージを見つけることがあります。

強調が追加されました。

重要:一部のプロジェクト構造では、"types"を使用するだけで問題を解決できない場合があります。私は上で説明したものとは異なる構造のプロジェクトを持っています。 "types"の適切な値を追加するだけで、Mochaをアプリケーションファイルから隠すことができるように、そのプロジェクトのビルドプロセスをリファクタリングする必要があります。

+0

これは新しいプロジェクトだから、あなたが提案したように構造化する立場にいる。この答えは、開発環境の現在の能力を考慮すると、最良の方法と思われます。 – Marlon

関連する問題