use*_*707 5 javascript testing redux redux-toolkit rtk-query
我正在尝试测试 RTKQuery 是否已使用 jest 调用端点。
我最终还希望能够模拟返回数据是什么,但首先我只想检查挂钩是否已被调用。
在下面的示例中,我试图监视 myApi 以获取自动生成的 useGetMyListQuery 挂钩。
运行时会抛出错误,有人可以帮忙吗?
it('Should render', async () => {
jest.spyOn(myApi, 'useGetMyListQuery')
render(
<Provider store={store}>
<MyComponent />
</Provider>
)
expect(myApi.useGetMyListQuery).toBeCalled()
})
Run Code Online (Sandbox Code Playgroud)
phr*_*hry 14
我无法回答您关于如何通过开玩笑来做到这一点的问题,但我希望我可以在这里给您一些见解 - 从编写大部分 RTKQ 的角度以及我如何想象它以稳定的方式进行测试:
我不会用玩笑来嘲笑。我会嘲笑 API。
原因是您的模拟将假设 RTKQ 挂钩的某些返回值 - 如果您的假设错误,您可能会有一个很好的绿色运行测试,但实际上您的应用程序仍然会失败。
一个例子是使用skip而不检查isUninitialized- 因为如果您不使用,则不会出现这种情况skip,并且您可能只是假设您只会在组件中看到isLoading,isSuccess和情况。isError在许多情况下,这是一个完全有效的假设,但并不总是正确的。模拟 RTKQ 会将由此产生的错误隐藏在绿色测试后面。
相反,我建议使用模拟服务工作者之类的东西来模拟您的 api 端点,并让 RTKQ 完成它的工作。这就是我们在自己的测试中测试 RTKQ 的方式 - 欢迎您查看:RTKQ 测试。