Как имитировать отправку с помощью jest.fn () - PullRequest
0 голосов
/ 16 июня 2020

Например, я хочу знать, что было отправлено, и аргумент. Создатель действия является асинхронным, но меня не волнует его реализация, я просто хочу знать, отправляет ли компонент правильного создателя действия с правильным аргументом. Я пробовал такой подход:

store.dispatch = jest.fn()

Но я не могу получить никакой полезной информации:

this is what I can get from store.dispatch.mock

Я пытался решить проблему следующим образом:

expect(store.dispatch.mock.calls[0].toString()).toBe(requestArticles().toString())

Но я не знаю аргумента и уверен, что есть способ лучше. Также следует отметить, что я использую библиотеку response-testing-library, поэтому я не могу использовать wrapper.instance().props от Enzyme.

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вы можете смоделировать файл действия и проверить, было ли вызвано действие.

например. Допустим, foo.action.js - это файл, в котором отправляется действие.

в начале ваш тестовый файл перед импортом компонента, вы можете имитировать файл как:

const yourActionMock = jest.fn();
jest.mock('<Path to the action file>/foo.action.js', () => ({
  yourAction: yourActionMock
}));

теперь вы можете протестировать действие под названием: expect(yourActionMock).toHaveBeenCalledWith(<args>)

0 голосов
/ 16 июня 2020

, если вы используете перехватчики response-redux, вы можете сделать это так:

import * as reactRedux from 'react-redux';

const mockDispatch = jest.fn();
const mockUseDispatch = jest.spyOn(reactRedux, 'useDispatch');

, а затем сделать утверждения на mockDispatch как обычно.

...