我有一个 redux 文件,其中包含我的 reducer 和我通过命名导出的所有操作。
export const reducer = (state, action) => ...
export myAction = action => {
return {type: 'ACTION', action}
}
...
在我的测试文件中,我导入减速器和动作。我有一个 renderWithRedux,它接收减速器并在里面创建一个真实的商店。
function renderWithRedux(ui, reducer = combineReducers(reducers), initialState = {}) {
const store = createStore(reducer, initialState)
const utils = render(<Provider store={store}>{ui}</Provider>)
return {
...utils,
store,
}
}
我的问题是我正在渲染的组件是在连接组件的 mapDispatchToProps 中传递的操作。
export default connect(mapStateToProps, { myAction })(MyComponent)
我想在我的特定用例中模拟myAction这个动作实际上是一个重击,我想看看商店是否更新了。
我遇到的问题是如何模拟 myAction 而不是 reducer。我试过了
jest.mock('./reducerFile', () => {
return jest.fn().mockImplementation(() => {
return {
reducer: require.requireActual('./reducerFile').reducer,
myAction: jest.fn()
}
})
})
但是减速器仍然以某种方式被嘲笑。
这是可能的还是我只是流浪癖。