ファイル「mediator.js」には、「mediator」オブジェクトをグローバル名前空間に追加する即時関数があります。この「メディエータ」は、私たちが持っている唯一のグローバル オブジェクトです。
これで、「メディエーター」オブジェクトのさまざまな単体テストができました。そして、各テストを独立して実行する必要があります。つまり、各テストは、immediate 関数を呼び出して新しいクリーンなメディエーター オブジェクトを作成することから開始する必要があります。
テストは Jasmine で作成され、Chutzpah と JsTestDriver の両方で実行されます。
では、どうすればこれを行うことができますか?
- Chutzpah では、個々のテストを独自の js ファイルに入れ、各テスト ファイルで mediator.js を参照することができました。
- JsTestDriver を使用すると、テストごとに構成ファイルが必要になる可能性があります。このファイルには、mediator.js とテスト ファイルが含まれます。
また、即時パターンを放棄することも検討しており、Mediator オブジェクトを作成するコンストラクター関数を用意しています。本番コードでは、メディエーターを 1 回作成するだけで済み、グローバル名前空間を汚染するコンストラクター関数をぶらぶらさせたくないため、これは残念です。
確かに、即時/自己呼び出し/自己実行関数をテストするときに、他の人がこの問題に遭遇しました。では、「ベストプラクティス」とは何ですか?