Jest - издевательский вызов функции

Я пытаюсь высмеять вызов функции и ожидаю, что он однажды вызовет другую функцию внутри него.

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 говорит, что он не был вызван. Если кто-то может предложить, как это лучше всего сделать, я был бы очень благодарен.

Ответ 1

Ваша подоходная доза не работает, потому что вы издеваетесь clearSomethingInModal только в контексте вашего тестового файла, поэтому clearSomethingInModal в myFunction.js по-прежнему является оригиналом. Главное, что вы не можете издеваться над тем, что создано непосредственно в myFunction.js. Единственное, что вы можете высмеять, это

  • которые вы импортируете в myFunction.js, например import clearSomethingInModal from 'clearSomethingInModal'
  • которые вы передаете в свою функцию при вызове их из своего теста

Это имеет смысл, если вы думаете о myFunction.js как о черном ящике, где вы можете контролировать, что происходит, например, импорт или аргументы функции, и где вы можете проверить, что происходит. Но вы не можете проверить материал, который происходит внутри коробки.

Вот два примера, которые отражают 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()
}