例如,我想知道已调度了什么和参数。动作创建者是异步的,但是我不关心它的实现,我只想知道组件是否使用正确的参数分派了正确的动作创建者。我尝试过这种方法:
store.dispatch = jest.fn()
但是我无法获得任何有用的信息:
我试图通过这种方式解决问题:
expect(store.dispatch.mock.calls[0].toString()).toBe(requestArticles().toString())
但是我不知道这种说法,而且我敢肯定,有更好的方法可以做到这一点。还要注意,我正在使用react-testing-library,所以不能使用来自Enzyme的wrapper.instance().props
。
答案 0 :(得分:1)
您可以模拟动作文件并检查动作是否已被调用。
例如可以说foo.action.js
是已分派动作的文件。
在导入组件之前,在测试文件的开头,您可以将文件模拟为:
const yourActionMock = jest.fn();
jest.mock('<Path to the action file>/foo.action.js', () => ({
yourAction: yourActionMock
}));
现在您可以测试以下操作:
expect(yourActionMock).toHaveBeenCalledWith(<args>)
答案 1 :(得分:0)
如果您使用的是react-redux钩子,则可以这样做:
Out[8]: <tf.Tensor: shape=(), dtype=float32, numpy=0.0> # state reset
,然后照常在import * as reactRedux from 'react-redux';
const mockDispatch = jest.fn();
const mockUseDispatch = jest.spyOn(reactRedux, 'useDispatch');
上进行断言。