本文介绍了`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 组件 = () =><Query query={query}>(({loading, data }) => if(loading) return ‘loading’ else if (data) return ‘data’ else return ‘nothing’</Query>代码>
本次测试:
it('', done => {
const renderer = TestRenderer.create(
<MockedProvider mocks={myMock} >
<Component/>
</MockedProvider>
)
expect(renderer.toJSON()).toMatchSnapshot()
显示一个快照:loading
但是如果我添加一个简单的 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` 需要超时吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!