0

開発プロセスに単体テストを導入しようとしていますが、その方法がわかりません。

多くのモジュール (分離された js ファイル) を含む大きなアプリケーションがあります。例えば:

  • videoInfo.js
  • availableVideos.js
  • availableChannels.js
  • ネットワーク設定.js
  • .......

残りのサービスを提供するいくつかのモジュールもあります。

  • eventHandler.js
  • i18n.js
  • ajax.js
  • 構成.js
  • auth.js
  • baseModule.js
  • .........

問題は、すべてのサービス モジュールを使用するvideoInfo.jsのようなモジュールをテストするにはどうすればよいかということです。私は2つのアプローチを見ています:

  • videoInfo.js のみをロードし、すべての内部インターフェイスをモックします。これの問題は、内部インターフェースのいずれかが変更された場合にエラーをキャッチできないことです。
  • すべてのモジュール (アプリ全体) をロードし、実際のアプリ環境で videoInfo をテストします (シミュレートされる外部 AJAX 呼び出しを除く)。

多くの内部依存関係がある場合、これを行うための良いアプローチは何ですか?

4

1 に答える 1

2

理想的には、テスト スイートに両方のアプローチが必要です。

すべての依存関係 (videoInfo.js の例) をモックして、そのコードを他のものから分離し、正しく動作していることを確認したいと考えています。コードの設計によっては、これが難しい場合があります。コードはテストを念頭に置いて書かれていない可能性があるため、モックには向いていません。

また、パーツ間のすべての相互作用が正しく機能することを確認する、アプリ レベルの一連のテスト全体が必要になる場合もあります。アプリによっては、制御できないデータに依存しているため、これらのテストが非常に不安定になる可能性があります。

これらのテストは、互いに独立して実行できるように、別々のスイートに含まれる可能性があります。

コードのテストを書き始めたばかりの場合は、できる限り最適なテストを作成してください。テストはコードであり、作業を進めながらリファクタリングする必要があります。できるだけ簡単なテストを書いてください。レガシ コードのテストを作成することは非常に困難です。現在の設計は、適切にテストするのが難しい場合があります。したがって、変更を行うときは、できることを行ってください。

于 2013-02-12T14:05:41.520 に答える