Jest Не удается прочитать свойство 'createEvent' из null - PullRequest
1 голос
/ 03 марта 2020

Я пытался смоделировать отклоненное значение и получил эту ошибку. Странно, что эта конструкция работает в случае «успеха» addUser.mockImplementation(value => jest.fn().mockResolvedValue(value)), но когда я пытаюсь сделать тот же трюк с отклонением, она не работает и говорит: «Не удается прочитать свойство 'createEvent' из null '

Вот мой тестовый пример

it('receives invalid value and throws an error', async () => {
addUser.mockImplementation(() =>
  jest.fn().mockRejectedValue(new Error('Sample error'))
)

const enqueueSnackbar = jest.fn()
useSnackbar.mockReturnValue({ enqueueSnackbar })

const { emailInput, form, submitButton } = setup()

await act(async () => {
  fillIn(emailInput, 'sample@mail.com')
})

expect(emailInput.value).toBe('sample@mail.com')
expect(submitButton).toHaveProperty('disabled', false)

await act(async () => {
  fireEvent.submit(form)
})

expect(enqueueSnackbar).toHaveBeenCalledTimes(1)
expect(enqueueSnackbar).toHaveBeenCalledWith(`Sample error`, {
  variant: 'error'
})})

Кто-нибудь знает, как заставить его работать?

1 Ответ

1 голос
/ 19 апреля 2020

Мне кажется, это работает, но я не могу этого объяснить. Попробуйте удалить обертку act () и использовать await сразу после вызова функции fireEvent.

  fireEvent.submit(form);
  await wait();
...