【问题标题】:Reset Redux store after each test with jest每次测试后用玩笑重置 Redux 存储
【发布时间】:2021-10-23 19:18:10
【问题描述】:
我正在使用 Jest 来测试我的 Redux 操作,有时会发生测试执行的操作与其他测试执行的操作冲突的情况。
例如,我测试了一个名为 add a user 的操作,因此它将商店的长度增加到 1,然后我测试了另一个名为 add and delete a user 的操作,它期望在该过程之后商店为空,但商店仍有自第一次测试以来就存在的用户。
是否有一种公认的方法可以在每次测试后重置 Redux 存储以重新开始?
【问题讨论】:
标签:
testing
redux
jestjs
specifications
【解决方案1】:
我的建议是为每个测试创建一个新的 Redux 存储 - 而不是重置它。
这样,您的中间件等也以干净的状态开始。
您可以在 Redux Toolkit 测试中使用类似 setupApiStore 的帮助器。
简化版如下所示
function setupTestStore() {
const refObj = {}
beforeEach(() => {
const store = configureStore({ reducer })
refObj.store = store
refObj.Wrapper = function Wrapper({ children }: any) {
return <Provider store={store}>{children}</Provider>
}
})
return refObj
}
在你的测试中
const storeRef = setupTestStore()
it('tests something', () => {
render(<MyComponent />, { wrapper: storeRef.wrapper }
}
it('tests something with another store', () => {
render(<MyComponent2 />, { wrapper: storeRef.wrapper }
}