Twoja dawka docelowa nie działa, ponieważ kpisz clearSomethingInModal
tylko w kontekście pliku testowego, więc clearSomethingInModal
w myFunction.js
jest nadal oryginalna. Najważniejsze jest to, że nie możesz wyśmiać czegoś, co jest bezpośrednio stworzone w myFunction.js
. Jedyne, co można drwić są
- modułów, które importować do
myFunction.js
, jak import clearSomethingInModal from 'clearSomethingInModal'
- wywołania zwrotne, które przechodzą do swojej funkcji podczas wywoływania ich z testu
Ma to sens, jeśli ciebie pomyśl o myFunction.js
jako blackbox, gdzie możesz kontrolować, co się dzieje, jak import lub argumenty funkcji, i gdzie możesz sprawdzić, co wychodzi. Ale nie możesz testować rzeczy, które dzieją się wewnątrz pudełka.
Oto dwa przykładem, który odzwierciedla 2 punkty na liście
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()
}
Dzięki Andreas, że to świetny wyjaśnienie. Więc rozumiem, że bez zmiany struktury mojej funkcji, nie mogę testować w sposób jaki chcę. Czyli (a) oznaczałoby to problem przy projektowaniu funkcji, oraz (b), w jej obecnej formie, czy byłyby jakieś ważne testy, które można by do niego zastosować? Zauważ, że funkcja "resetModal" również wywołuje wiele innych funkcji, które zostały pominięte dla zwięzłości –