Javascript `阿波罗``MockedProvider`需要超时吗?
我在使用阿波罗的Javascript `阿波罗``MockedProvider`需要超时吗?,javascript,react-apollo,apollo-client,Javascript,React Apollo,Apollo Client,我在使用阿波罗的MockedProvider时遇到了问题,因为MockedProvider似乎在异步运行 给定以下简单组件: const Component=()=>(({loading,data})=>if(loading)返回'loading'否则if(data)返回'data'否则返回'nothing' 此测试: it('', done => { const renderer = TestRenderer.create( <MockedProvider mo
MockedProvider
时遇到了问题,因为MockedProvider
似乎在异步运行
给定以下简单组件:
const Component=()=>(({loading,data})=>if(loading)返回'loading'否则if(data)返回'data'否则返回'nothing'
此测试:
it('', done => {
const renderer = TestRenderer.create(
<MockedProvider mocks={myMock} >
<Component/>
</MockedProvider>
)
expect(renderer.toJSON()).toMatchSnapshot()
我得到一个快照:数据
有没有更优雅的方法来解决这个问题?我很好奇其他人是否有想法 现在必须做这样的事情:
export const AsyncTestRenderer = async elements => {
/** Render, then allow the event loop to be flushed before returning */
const renderer = TestRenderer.create(elements)
return new Promise(resolve => {
setTimeout(() => resolve(renderer), 1)
})
}
并将其用于测试:
const renderer = await AsyncTestRenderer(
<MockedProvider mocks={mocks} >
<MyComponent/>
</MockedProvider>
)
expect(renderer.toJSON()).toMatchSnapshot() // renders data from mock Query
const renderer=wait AsyncTestRenderer(
)
expect(renderer.toJSON()).toMatchSnapshot()//从模拟查询中呈现数据
您可以使用如下所示的waait库
it(“”,async()=>{
const renderer=TestRenderer.create(
)
等待等待(0);
expect(renderer.toJSON()).toMatchSnapshot();
const renderer = await AsyncTestRenderer(
<MockedProvider mocks={mocks} >
<MyComponent/>
</MockedProvider>
)
expect(renderer.toJSON()).toMatchSnapshot() // renders data from mock Query
it('',async () => {
const renderer = TestRenderer.create(
<MockedProvider mocks={myMock} >
<Component/>
</MockedProvider>
)
await wait(0);
expect(renderer.toJSON()).toMatchSnapshot();