使用Axios和Jest测试简单的GET请求



我正在使用axios0.18.0jest22.4.2,我正在尝试根据Axios文档示例和Jest Async/Await文档使用Axios和Jest测试一个简单的请求

// services.js
import axios from 'axios';
export const getUser = () => axios.get('https://api.github.com/users/mzabriskie');

// services.spec.js
import { getUser } from './services';
it('should return data from github user', async () => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000;
const result = await getUser();
console.log('RESULT -->', result);
});

通过DEFAULT_TIMEOUT_INTERVAL后(在本例中为 30 秒(,测试将给出以下错误消息:

Error: Timeout - Async callback was not invoked within timeout 
specified by jasmine.DEFAULT_TIMEOUT_INTERVAL

而且它永远不会达到console.log声明。

知道我在这里可能缺少什么或如何调试它吗?

所以事实证明,问题在于使用依赖 jest-mock-axios,似乎一旦配置它就永远不会允许 HTTP 请求在测试中通过,即使您没有在特定测试中使用它(如在原始问题示例中(。

因此,为了解决这个问题,所有相关请求测试必须定义模拟才能工作(或者如果您希望测试真正的 API 请求,则完全删除 jest-mock-axios 依赖项(。

最新更新