J'essaie de me moquer d'un appel de fonction et je m'attends à ce qu'il ait appelé une autre fonction une fois.
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()
}
Cependant, la sortie de Jest indique que l'appel n'a pas été fait. Si quelqu'un peut suggérer la meilleure façon de procéder, je vous en serais très reconnaissant.
Votre approche ne fonctionne pas car vous vous moquez de clearSomethingInModal
uniquement dans le contexte de votre fichier de test, donc clearSomethingInModal
dans le myFunctions.js
est toujours l'original. Le point principal est que vous ne pouvez pas vous moquer de quelque chose qui est créé directement dans myFunctions.js
. La seule chose que vous pouvez vous moquer sont:
myFunctions.js
, comme import clearSomethingInModal from 'clearSomethingInModal'
;Cela a du sens si vous pensez à myFunctions.js
comme une boîte noire, où vous pouvez contrôler ce qui se passe, comme des importations ou des arguments de fonction, et où vous pouvez tester ce qui sort. Mais vous ne pouvez pas tester ce qui se passe à l'intérieur de la boîte.
Voici deux exemples qui reflètent les 2 points de la liste:
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()
}