Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript `阿波罗``MockedProvider`需要超时吗?_Javascript_React Apollo_Apollo Client - Fatal编程技术网

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();