使用Jest模拟请求标头模块

时间:2017-09-15 01:35:44

标签: javascript jestjs fetch-api es6-modules request-headers

function createRequest(method) {
     const init = {
         method,
         headers: new Headers({.....}),
     };

    return new Request(url, init); }

我在上面的代码(https://davidwalsh.name/fetch

中使用了Request标头(带有Fetch)

然而,在使用Jest编写单元测试用例时,它给出了我的错误:ReferenceError:未定义标头

我是否需要模拟这些标准模块?我应该如何在单元测试用例中导入标题

3 个答案:

答案 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,
  });
});