繁体   English   中英

获取模拟方法返回未定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM