使用jest测试外部API函数时出错(react-query: useQuery)
问题描述: 在使用jest进行测试时,我遇到了一个问题。我正在使用react-query库中的useQuery钩子函数来获取外部API的数据。然而,在我的测试中,当我调用useQuery时,它会抛出一个错误。我想知道如何解决这个问题并成功测试外部API函数。
解决方案:
示例代码:
import { renderHook } from '@testing-library/react-hooks';
import { useQuery } from 'react-query';
test('should fetch data from external API', async () => {
const mockData = { id: 1, name: 'John Doe' };
const mockFetchFn = jest.fn().mockResolvedValue(mockData);
const { result, waitForNextUpdate } = renderHook(() =>
useQuery('data', mockFetchFn)
);
await waitForNextUpdate();
expect(result.current.data).toEqual(mockData);
expect(mockFetchFn).toHaveBeenCalledTimes(1);
});
在这个示例中,我们使用renderHook函数来渲染一个使用useQuery的自定义钩子函数。我们使用jest.fn()创建了一个模拟函数mockFetchFn,并使用mockResolvedValue来模拟API的成功响应。然后,我们等待useQuery的下一个更新,并使用expect断言来验证返回的数据是否与模拟数据一致。
腾讯云相关产品推荐:
请注意,以上推荐的腾讯云产品仅供参考,您可以根据实际需求选择适合的产品。此外,还有其他云计算品牌商提供类似的产品和服务,您可以根据自己的需求进行选择和比较。
领取专属 10元无门槛券
手把手带您无忧上云