我正在尝试在 Jest 中测试一些 api 调用,但是测试失败,因为 api 调用依赖于首先完成的另一个调用,因此返回的值是空的,而不是应该在那里的值。我正在使用 react-query 进行 api 调用。还是有更好的或其他方法来测试异步调用?我也在使用 MSW 来拦截 api 调用。
异步调用
const getApi = async (): Promise<any> => {
const response = await axios.get(`https://www.xxxxx`).then(res => res.data);
return response;
}
测试
const queryClient = new QueryClient()
describe('Comp1 tests', (): void => {
beforeEach(() => {
jest.useFakeTimers();
});
it('Should give correct response with render', async () => {
renderWithQueryClient(<QueryClientProvider client={queryClient}><Comp1 /></QueryClientProvider>);
expect(await screen.findByTestId('main-header')).toBeInTheDocument();
});
});
我得到:
无法通过以下方式找到元素:[data-testid="main-header"]