fetchList
вызывается, когда компонент монтируется, насмешливый API.get
не влияет на первый вызов, а второй вызов ничего не делает. Это плохая практика - имитировать методы, назначая им шпионов, потому что они не могут быть восстановлены после теста.
Проблема с fetchList
заключается в том, что его нельзя шпионить или высмеивать, потому что он используется в том же модуле, что и он. определены. Обещание, которое оно создает в useEffect
, не может быть объединено в цепочку, обещания должны быть сброшены, чтобы избежать состояния гонки.
Это может быть:
let flushPromises = () => new Promise(resolve => setImmediate(resolve));
jest.spyOn(API, 'get').mockResolvedValue({ data: mockList });
const wrapper = mount(
<Provider store={store}>
<List />
</Provider>
);
await flushPromises();
expect(store.getActions())...