[英]Fetch mock method returns undefined
如果我使用下面的代码来测试 function 用户的 fetch 方法,我的 await fetch 总是解析为 undefined。 任何想法为什么?
global.fetch = jest.fn(() =>
Promise.resolve({
json: () => Promise.resolve({
name: "test user"
})
})
);
const user = async () => {
try {const url = `/users/user`;
const response = await fetch(url) //resolves to undefined
return await response.json()
} catch(e) {
return e;
}
}
test('get mock user', async () => {
const userName = await user();
expect(userName).toEqual({ name: "test user"});
})
我知道这个问题是不久前提出的,但我是通过搜索引擎来到这里遇到同样问题的,所以我认为这可能会有所帮助:
实际上,问题是由 Create-React-App 将resetMocks
设置为 true 引起的(另请参见https://stackoverflow.com/a/68214648 )。 所以你的模拟在测试运行之前被重置。 如果将它移到test()
块内,应该没问题。
因此,要么将模拟配置为不重置,要么在其他地方模拟它。 我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.