function createRequest(method) {
const init = {
method,
headers: new Headers({.....}),
};
return new Request(url, init); }
我在上面的代码(https://davidwalsh.name/fetch)
中使用了Request标头(带有Fetch)然而,在使用Jest编写单元测试用例时,它给出了我的错误:ReferenceError:未定义标头
我是否需要模拟这些标准模块?我应该如何在单元测试用例中导入标题
答案 0 :(得分:5)
我说是的,嘲笑 Headers 绝对是测试环境中的一个选项。 在我的特殊情况下,我只是嘲笑它:
global.Headers = ()=>{}
如果您想根据fetch返回的响应测试代码是否正常运行,这将正常工作。 如果您还需要检查是否发送了正确的标头,则需要更复杂的模拟,和/或可能需要专门的网络方法测试套件。
答案 1 :(得分:2)
在玩笑的安装文件中添加“ import“ isomorphic-fetch”“应该可以解决此问题,因为这会使缺少的dom API在测试中可用
答案 2 :(得分:1)
我知道这是一个老问题,但是对于遇到这个问题的人(像我一样),这对我来说很有效:
// before running each test
beforeEach(() => {
// define `append` as a mocked fn
const append = jest.fn();
// set test `Headers`
global.Headers = () => ({
append: append,
});
});