Javascript 如何测试使用whatwgfetch和mocha的代码?

Javascript 如何测试使用whatwgfetch和mocha的代码?,javascript,testing,mocha.js,fetch,Javascript,Testing,Mocha.js,Fetch,我正在我的应用程序中使用,它运行良好,但我想用摩卡和巴贝尔测试我的代码,因为我正在编写ES2016 这不是开箱即用的。我得到: 1) testApi.js Test api error handling: ReferenceError: fetch is not defined at callApi (callApi.js:10:10) at Context.<anonymous> (testApi.js:8:40) 1)testApi.js测试api错误处理: Refe

我正在我的应用程序中使用,它运行良好,但我想用摩卡和巴贝尔测试我的代码,因为我正在编写ES2016

这不是开箱即用的。我得到:

1) testApi.js Test api error handling:
 ReferenceError: fetch is not defined
  at callApi (callApi.js:10:10)
  at Context.<anonymous> (testApi.js:8:40)
1)testApi.js测试api错误处理:
ReferenceError:未定义提取
在callApi(callApi.js:10:10)
在上下文中。但api略有不同,例如,它需要完整的url而不是相对路径


有解决这个问题的方法吗?

我能够使用
节点获取
模块让摩卡测试使用三元数据:

// Support server-side fetch for tests.
let fetch = (typeof window === 'undefined')
  ? require('node-fetch')
  : window.fetch
;

因此,如果将来有人遇到此问题:

  • 使用
  • 使用webpack时,请确保您的目标设置为“web”
  • 在index.js或其他根文件中导入“同构提取”
  • 在任何调用fetch的测试文件(或根测试文件,如果有的话)中导入“同构fetch”
  • 您的测试现在将使用node fetch,您的网页包现在将构建whatwg fetch

你想用Node测试你的代码吗?我真的不在乎,但我已经用Chai编写了我所有的断言,目前正在使用Mocha运行。我在写ES2016,所以巴贝尔需要在管道中的某个地方传输它。听起来你在使用一个全局
获取
(由你的浏览器提供的),或者网页包为你全球化它。如果您使用类似的东西并使用适当的
const fetch=require(…)
,您应该能够测试客户端和服务器端,并在两侧都可以访问
fetch()
。@Tieme您解决了这个问题吗???不,我没有..您可以在您的package.json中安装同构fetch和,将测试命令设置为“mocha--require isomorphic fetch”