テスト フレームワーク (nodeunit、mocha、should) に各テストの「必要な」モジュールをリロードするように指示する方法はありますか?
私のモジュールには複数のテストがあり、Node のモジュール システムは最初のrequire()
.スイートです。)
何が起こっているのかというと、TDD が次のようなモジュールを作成するように私を駆り立てたということです。
// my module
module.exports = function(dep1, dep2) {
// code goes here, makes use of dep1/dep2
}
私の最初のテストでは、dep1 のモックを挿入します。次のテストでは、dep2 のモックを挿入します。しかし、require()
常にモジュールの同じインスタンスを返すため、2 番目のテストのモックが適切に挿入されることはありません。テストはすべて同じテスト対象オブジェクトで実行されますが、これは悪いことです。
1 つの解決策は、「new」をサポートするようにモジュールを再設計し、毎回新しいインスタンスを返すことです。そのルートをたどる前に、テスト環境でモジュールを強制的にリロードする方法はありますか?