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

时间:2018-05-07 15:16:29

标签: unit-testing jasmine axios jestjs

我正在使用axios 0.18.0jest 22.4.2,我正在尝试使用基于Axios documentation example的Axios和Jest测试一个简单的请求和Jest Async / Await documentation

// 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声明。

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

1 个答案:

答案 0 :(得分:0)

事实证明问题是使用依赖jest-mock-axios,它似乎一旦配置它就永远不允许HTTP请求在测试中通过,即使你没有在特定测试中使用它(如在最初的问题例子中)。

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