我正在使用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));
});
Run Code Online (Sandbox Code Playgroud)
收到的结果是:错误!!!! TypeError:网络请求失败
您需要返回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));
});
Run Code Online (Sandbox Code Playgroud)
您可以在这里阅读有关异步测试的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';
Run Code Online (Sandbox Code Playgroud)
好吧,我已经使用 async wait 让它工作了,但我仍然不明白为什么它在没有 async 块的情况下不起作用 - 所以现在我的测试使用以下代码:
it('should find a result via REST', async () => {
const data = await CqApi.personSearch('XYZ');
expect(....).toBeDefined();
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6036 次 |
最近记录: |