gpt4 book ai didi

react-redux - Jest mocking - 模拟命名导出,除了一个

转载 作者:行者123 更新时间:2023-12-04 12:13:34 25 4
gpt4 key购买 nike

我有一个 redux 文件,其中包含我的 reducer 和我通过命名导出的所有操作。

export const reducer = (state, action) => ...

export myAction = action => {
return {type: 'ACTION', action}
}
...

在我的测试文件中,我导入了 reducer 和操作。我有一个 renderWithRedux,它接收 reducer 并在里面创建一个真正的 store。
function renderWithRedux(ui, reducer = combineReducers(reducers), initialState = {}) {
const store = createStore(reducer, initialState)
const utils = render(<Provider store={store}>{ui}</Provider>)

return {
...utils,
store,
}
}

我的问题是我正在渲染的组件是在连接组件的 mapDispatchToProps 中传递的 Action 。
export default connect(mapStateToProps, { myAction })(MyComponent)

我想在我的特定用例中模拟 myAction 这个 Action 实际上是一个 thunk,我想看看商店是否更新。

我的问题是如何模拟 myAction 而不是 reducer 。我试过了
jest.mock('./reducerFile', () => {
return jest.fn().mockImplementation(() => {
return {
reducer: require.requireActual('./reducerFile').reducer,
myAction: jest.fn()
}
})
})

但是 reducer 仍然以某种方式被 mock 。

这是可能的还是我只是流浪癖。

最佳答案

您可以尝试以下解决方法:

jest.mock('./reducerFile', () => {
const moduleMock = jest.requireActual(
'./reducerFile'
);

return {
...moduleMock,
myAction: jest.fn(),
};
});

关于react-redux - Jest mocking - 模拟命名导出,除了一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com