我正在编写测试,我在我的应用中测试操作。我在试图获得最后期望被召唤时遇到了麻烦。
const pushData = jest.fn(() => Promise.resolve()); test('anotherAsyncCall is fired to get more info', () => { const store = mockStore({}); asynCallToGetData = jest.fn(() => Promise.resolve()); const action = pushData(); const dispatch = jest.fn(); const anotherAsyncCall = jest.fn(() => Promise.resolve()); const expectedActions = [{ type: 'DATA_RECEIVED_SUCCESS' }, ]; return store.dispatch(action).then(() => { expect(asynCallToGetData).toHaveBeenCalled(); expect(store.getActions()).toMatch(expectedActions[0].type); expect(dispatch(anotherAsyncCall)).toHaveBeenCalled(); //This fails });
});
但是我在运行测试后得到的消息是
expect(jest.fn())[.not].toHaveBeenCalled()
jest.fn() value must be a mock function or spy.
Received: undefined here
答案 0 :(得分:2)
您应该使用jest.spyOn(object, methodName)来创建Jest模拟功能。例如:
const video = require('./video');
test('plays video', () => {
const spy = jest.spyOn(video, 'play');
const isPlaying = video.play();
expect(spy).toHaveBeenCalled();
expect(isPlaying).toBe(true);
spy.mockReset();
spy.mockRestore();
});