関数呼び出しをモックしようとしていますが、その中の別の関数が一度呼び出されたことを期待しています。
myFunctions.test.js
import { resetModal } from '../myFunctions.js';
describe('resetModal', () => {
it('calls the clearSomethingInModal function', () => {
const clearSomethingInModal = jest.fn();
resetCreationModal();
expect(clearSomethingInModal.mock.calls.length).toBe(1);
})
})
myFunctions.js
export resetModal() {
clearSomethingInModal()
}
ただし、Jestの出力では、呼び出されていないと表示されます。誰かがこれを行う最善の方法を提案できるなら、私は非常に感謝するでしょう。
テストファイルのコンテキストでのみclearSomethingInModal
をモックするため、アプローチは機能しません。したがって、myFunctions.js
のclearSomethingInModal
は元のままです。主なポイントは、myFunctions.js
で直接作成されたものをモックできないことです。あなたがモックできる唯一のものは:
myFunctions.js
のようなimport clearSomethingInModal from 'clearSomethingInModal'
にインポートするモジュール。これは、myFunctions.js
をブラックボックスと考える場合に意味があります。インポートや関数の引数など、入力内容を制御でき、出力結果をテストできます。ただし、ボックス内で発生することをテストすることはできません。
リスト内の2つのポイントを反映する2つの例を次に示します。
myFunctions.test.js
import { resetModal } from '../myFunctions.js';
import clearSomethingInModal from 'clearSomethingInModal';
jest.mock('clearSomethingInModal', () => jest.fn())
describe('resetModal', () => {
it('calls the clearSomethingInModal function', () => {
resetCreationModal();
expect(clearSomethingInModal.mock.calls.length).toBe(1);
})
})
myFunctions.js
import clearSomethingInModal from 'clearSomethingInModal';
export resetModal() {
clearSomethingInModal()
}
myFunctions.test.js
import { resetModal } from '../myFunctions.js';
describe('resetModal', () => {
it('calls the clearSomethingInModal function', () => {
const clearSomethingInModal = jest.fn();
resetCreationModal(clearSomethingInModal);
expect(clearSomethingInModal.mock.calls.length).toBe(1);
})
})
myFunctions.js
export resetModal(clearSomethingInModal) {
clearSomethingInModal()
}