如何在@testing-library/react 的"fireEvent" 之前重新获取MockProvider?
How to re-fetch MockProvider before a "fireEvent" from @testing-library/react?
我试图在这里执行一个测试,基本上应该在使用 graphQL 返回的模拟数据单击按钮后执行一些操作
<MockedProvider
mocks={mocks}>
<button data-testid="my-button">Execute Actions using mocked Data</button>
</MockedProvider>
fireEvent.click(myButton);
当它触发按钮时,从 graphQL 接收到的数据为空。
这是我的模拟:
return {
request: {
query: QUERY,
variables: {
marketCodes: '',
years: '',
minDate: null,
maxDate: null,
limit: 100
}
},
result: { data },
newData: jest.fn(() => ({ data }))
};
有人可以帮我吗?
fireEvent.click(myButton);
await waitForElementToBeRemoved(() => screen.queryByTestId("loader"));
// now you can expect the mocked data
在执行任何导致某些异步功能的操作后,您需要等待微调器离开 dom,然后您将只能使用新状态。
Here,如果你没有任何微调器或加载器,你可以看到他们正在使用 Promise resolve。
可以参考this too. And, try using user-event
。这是推荐的用户交互方式。
而且,您可以使用 msw 直接模拟 api 请求,而不是使用 MockedProvider。我一直在使用它并且非常满意。
我试图在这里执行一个测试,基本上应该在使用 graphQL 返回的模拟数据单击按钮后执行一些操作
<MockedProvider
mocks={mocks}>
<button data-testid="my-button">Execute Actions using mocked Data</button>
</MockedProvider>
fireEvent.click(myButton);
当它触发按钮时,从 graphQL 接收到的数据为空。 这是我的模拟:
return {
request: {
query: QUERY,
variables: {
marketCodes: '',
years: '',
minDate: null,
maxDate: null,
limit: 100
}
},
result: { data },
newData: jest.fn(() => ({ data }))
};
有人可以帮我吗?
fireEvent.click(myButton);
await waitForElementToBeRemoved(() => screen.queryByTestId("loader"));
// now you can expect the mocked data
在执行任何导致某些异步功能的操作后,您需要等待微调器离开 dom,然后您将只能使用新状态。
Here,如果你没有任何微调器或加载器,你可以看到他们正在使用 Promise resolve。
可以参考this too. And, try using user-event
。这是推荐的用户交互方式。
而且,您可以使用 msw 直接模拟 api 请求,而不是使用 MockedProvider。我一直在使用它并且非常满意。