我在我的App.test.js文件中调用一个api来测试API:
我已经安装了jest-fetch-mock
这是我的devDependencies:
"devDependencies": {
"babel-preset-react-native-stage-0": "^1.0.1",
"eslint-config-rallycoding": "^3.2.0",
"jest": "^23.1.0",
"jest-fetch-mock": "^1.6.6",
"jest-react-native": "^18.0.0",
"react-test-renderer": "16.3.1"
},App.test.js
describe('Test API', () => {
it('ack', async () => {
const response = await fetch('https://obscure-reaches-65656.herokuapp.com/api/drivers?city=TaipeiWest&lng=121.514163&lat=25.049447');
expect(response).toBeDefined();
console.log(response);
});
});我发现如果我使用无用的api https://obscure-reaches-65656.herokuapp.com/api/drivers?city=&lng=121.514163&lat=25.049447。
或者把它移走
const response = await fetch('');然后键入npm run test
我的状态仍然是200
这是console.log
Response {
type: 'default',
status: 200,
ok: true,
statusText: 'OK',
headers: Headers { map: { 'content-type': 'text/plain;charset=UTF-8' } },
url: '',
_bodyInit: '',
_bodyText: '' }为什么异步/awiat不能工作?我想我会得到地位是422。

任何帮助都将不胜感激。提前准备好。
发布于 2018-10-15 10:20:32
您总是得到该响应,因为在使用异步/等待时,您没有等待请求的承诺。之所以发生这种情况,是因为您在describe方法中没有正确使用异步。
看看在这篇文章,特别是不等待回调和具有异步函数的单元测试
要使代码正确工作,请将异步添加到describe内部箭头函数中,如下所示:
describe('Test API', async () => {
it('ack', async () => {
const response = await fetch('https://obscure-reaches-65656.herokuapp.com/api/drivers?city=TaipeiWest&lng=121.514163&lat=25.049447');
expect(response).toBeDefined();
console.log(response);
});
});如果仍然得到相同的响应,那么将await添加到it (如果响应是承诺的,应该没有问题):
await it('ack', async () => {https://stackoverflow.com/questions/52813559
复制相似问题