gpt4 book ai didi

redux - 使用 MSW 和 Jest 时,如何在请求之间的测试中清除 RTK 查询缓存?

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

我正在使用 Redux Toolkit 和 RTK Query with MSW 进行模拟,但在测试中尝试返回错误时我似乎得到了相同的数据。我怀疑这是 RTK 查询缓存行为的问题,并尝试使用工具包 createApi 方法的这些选项禁用它,但它们似乎没有解决问题:

keepUnusedDataFor: 0,
refetchOnMountOrArgChange: true,
refetchOnFocus: true,
refetchOnReconnect: true,

在 MSW 文档中,它给出了使用其他库时如何解决此问题的示例:https://mswjs.io/docs/faq#why-do-i-get-stale-responses-when-using-react-queryswretc

// react-query example
import { QueryCache } from 'react-query'

const queryCache = new QueryCache()

afterEach(() => {
queryCache.clear()
})

// swr example
import { cache } from 'swr'

beforeEach(() => {
cache.clear()
})

如何在使用 Redux Toolkit 和 RTK Query 时实现同样的效果?

最佳答案

我建议阅读 RTK 查询测试:https://github.com/reduxjs/redux-toolkit/blob/18368afe9bd948dabbfdd9e99b9e334d9a7beedf/src/query/tests/helpers.tsx#L153-L166

这就是我们所做的:

  const refObj = {
api,
store: initialStore,
wrapper: withProvider(initialStore),
}
let cleanupListeners: () => void

beforeEach(() => {
const store = getStore() as StoreType
refObj.store = store
refObj.wrapper = withProvider(store)
if (!withoutListeners) {
cleanupListeners = setupListeners(store.dispatch)
}
})
afterEach(() => {
if (!withoutListeners) {
cleanupListeners()
}
refObj.store.dispatch(api.util.resetApiState())
})

所以你正在寻找 dispatch(api.util.resetApiState())

关于redux - 使用 MSW 和 Jest 时,如何在请求之间的测试中清除 RTK 查询缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67999073/

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