は、私はいくつかの機能が含まれているユーティリティモジュールを持っているし、ファイルの最後に、私はそうのようにそれらをエクスポートします。スパイモジュール・エクスポート・ユーティリティ機能のJavaScript(ES6)で
module.exports = {
someFunction1,
someFunction2,
someFunction3,
}
次に、それらの関数の単体テストを記述したいと思います。関数のいくつかはお互いに依存します。例えば、someFunction1がsomeFunction2を呼び出すかもしれないというように、彼らは互いに呼び出す。円形の問題はありません。私は、関数のいずれかが呼び出されたことをスパイする必要があるまで
すべてが、うまく動作します。どうしたらいいですか?現在私はChaiとSinonを使用しています。テストファイルで
が、私はモジュールのような全ファイルインポートしている:const wholeModule = require('path/to/the/js/file')
そして最後に、私のテストでは、次のようになります。
it('should call the someFunction2', (done) => {
const spy = sinon.spy(wholeModule, 'someFunction2')
wholeModule.someFunction1() // someFunction2 is called inside someFunction1
assert(spy.calledOnce, 'someFunction2 should be called once')
done()
})
問題は、テストが失敗したということであり、 someFunction1では、someFunction2関数が直接使用されるためです。私はスパイをモジュールオブジェクトの関数に適用します。しかし、それは別の目的です。ここでsomeFunction1の例です:
function someFunction1() {
someFunction2()
return 2;
}
私はそれが動作しません理由を知っているが、私はそれを動作させるために、この場合のベストプラクティスがどうなるか分からないのですか?助けてください!
惜しいが、= /動作しませんでした。それは明らかに偽の関数を呼び出します。しかし、スパイが呼ばれたと主張しているとき、それは呼ばれていません –
@ VilleMiekk-oja編集後に解決策を試しましたか? –
はい、結果に違いはありません –