Jest - TypeError:获取网络请求失败

时间:2016-10-19 08:45:43

标签: fetch jestjs

我使用Jest来测试REST API并且我收到TypeError:每当我发出获取请求时网络请求都会失败响应。所有对REST API的调用都在应用程序上运行,并且仅在我的Jest测试中失败。

fetch和Jest之间是否存在任何已知的不兼容性?例如,这个简单的测试最终会执行catch语句:

it('should find a result via fetch', () => {
    fetch('http://www.google.com').then(() => console.log('Success')).catch((err) => console.log('Error!!!!' + err));
});

收到的结果是:错误!!!! TypeError:网络请求失败

2 个答案:

答案 0 :(得分:7)

您需要返回Promise返回的fetch

it('should find a result via fetch', () => {
    return fetch('http://www.google.com')
        .then(() => console.log('Success'))
        .catch((err) => console.log('Error!!!!' + err));
});

您可以在这里阅读有关异步测试的jest文档中的更多内容:https://facebook.github.io/jest/docs/tutorial-async.html

此外,在create-react-app中使用jest将通过jsdom使用whatwg-fetch polyfill。您可以通过直接导入来强制使用isomorphic-fetch

import fetch from 'isomorphic-fetch';

答案 1 :(得分:0)

好的我已经使用异步等待工作了,但是我仍然不明白为什么没有异步块它不能工作 - 所以现在我的测试使用这个代码:

it('should find a result via REST', async () => {
        const data = await CqApi.personSearch('XYZ');

        expect(....).toBeDefined();
    });