ReferenceError:未定义响应

Ank*_*nte 8 jestjs vuejs2 vue-test-utils

简洁版本:

vue-test-utils我正在使用和 为我的 Vue 组件编写一个测试用例jest

我试图Response在我的一个测试用例中创建一个对象,但我不断收到错误 ReferenceError: Response is not defined

长版

当使用 jest 调度 Vuex 操作时,我试图模拟 API 响应。我创建了一个像这样的 Vuex 动作

let fakeAccountList = [
  {"id":"abcd","title":"Random Account 1"},
  {"id":"pqrs","title":"Random Account 2"}
]
actions = {
   getAccounts: jest.fn(()=>{

     return new Promise((resolve, reject)=>{
       resolve(mockResponse(200,'ok',fakeAccountList))
      })
    })
 }
Run Code Online (Sandbox Code Playgroud)

getAccounts操作返回一个 Promise,该 Promise 解析为帐户列表。函数mockResponse如图:

mockResponse = (status, statusText, response) => {

  return new Response(response, {
    status: status,
    statusText: statusText,
    headers: {
      'Content-type': 'application/json'
    }
  });
};
Run Code Online (Sandbox Code Playgroud)

mockResponse被调用时,我收到错误ReferenceError: Response is not defined

我发现这个非常老的问题: https://github.com/facebook/jest/issues/930 评论表明它已修复,但是,它对我不起作用。我不想为此导入额外的库isomorphic-fetch

这是我devDependenciespackage.json

"devDependencies": {
    "@vue/cli-plugin-babel": "3.0.3",
    "@vue/cli-plugin-e2e-cypress": "3.0.3",
    "@vue/cli-plugin-eslint": "3.0.3",
    "@vue/cli-plugin-unit-jest": "3.0.3",
    "@vue/cli-service": "3.0.3",
    "@vue/test-utils": "1.0.0-beta.25",
    "babel-core": "7.0.0-bridge.0",
    "babel-jest": "23.6.0",
    "less": "3.0.4",
    "less-loader": "4.1.0",
    "lodash": "4.17.10",
    "node-sass": "4.9.2",
    "sass-loader": "7.0.3",
    "vue-template-compiler": "2.5.16",
  }
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。提前致谢

小智 9

我正在使用反应应用程序,只需在模拟文件中添加以下语句即可解决该问题。希望这对您或其他人有帮助。

import 'isomorphic-fetch'