本文介绍了`react-apollo``MockedProvider`是否需要超时?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在将 jest
与react-apollo的 MockedProvider
结合使用,但由于 MockedProvider
似乎是异步运行,因此遇到了麻烦.
I'm using jest
with react-apollo's MockedProvider
and I'm having trouble because the MockedProvider
seems to be behaving asynchronously.
给出以下简单组件:
const Component =()=>< Query query = {query}>((({loading,data})=> if(loading)返回'loading'else if(data)返回'data'else else'nothing'</Query> 代码>
此测试:
it('', done => {
const renderer = TestRenderer.create(
<MockedProvider mocks={myMock} >
<Component/>
</MockedProvider>
)
expect(renderer.toJSON()).toMatchSnapshot()
显示以下快照:正在加载
但是如果我添加一个1毫秒的简单超时:
but if I add a simple timeout of 1 ms:
it('', done => {
const renderer = TestRenderer.create(
<MockedProvider mocks={myMock} >
<Component/>
</MockedProvider>
)
setTimeout(() => {
expect(renderer.toJSON()).toMatchSnapshot()
done()
}, 1);
我得到以下快照: data
有没有更优雅的方法来解决这个问题?
Is there a more elegant way to get around this?
推荐答案
您可以使用waait lib,如以下文档
You can use waait lib like shown at this docs
it('',async () => {
const renderer = TestRenderer.create(
<MockedProvider mocks={myMock} >
<Component/>
</MockedProvider>
)
await wait(0);
expect(renderer.toJSON()).toMatchSnapshot();
这篇关于`react-apollo``MockedProvider`是否需要超时?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!