javascript - 获取引用错误 : fetch is not defined

标签 javascript reactjs jestjs redux-saga universal

在我的 React native 应用程序的 Saga 测试中(确实可以正常工作),我添加了以下测试来调用执行 POST http 调用 (doScan) 的函数。

describe('Scan the product and register the scanning action', () => {
  const it = sagaHelper(scanProductSaga(scanProductAction(item)));

  it('logscan via ASL', (result) => {
    expect(result).toEqual(cps(ASLogger.logScan, xxx));
    return logScanResult;
  });

  it('should register the product', (result) => {
    expect(result).toEqual(call(doScan, logScanResult));
  });
});

单独的文件:

const doScan = scanObj =>
  toJSON(fetch('https://xxxx.xxxxxx.com/logger/scans', {
    method: 'POST',
    headers: new Headers(CONTENT_TYPE_HEADERS),
    body: JSON.stringify(scanObj),
  }));

注意:fetch 函数来自 react-native 库中的“react-native-interfaces.js”。测试失败,错误是由以下异常引起的:

ReferenceError: fetch is not defined
      at doScan (/Users/andy/WebstormProjects/ASAP/api/index.js:81:11)....

什么会导致这样的问题?解决方案可能是什么?

最佳答案

react-native默认有fetch,但是node.js上的测试环境没有fetch

您可以在测试代码的顶部像下面这样导入fetch

const fetch = require('node-fetch')

文件react-native-interface.js只声明了fetch的类型。

declare var fetch: any;

关于javascript - 获取引用错误 : fetch is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50371198/

相关文章:

reactjs - Material-UI:限制 TextField 中的特定特殊字符

javascript - 开 Jest ,如何忽略特定文件夹的测试覆盖率?

node.js - 在 Jest 中创建 IncomingMessage 测试虚拟机

javascript - Jest 遇到了一个意想不到的 token React

javascript - 不等间隔 Highcharts 仪表

javascript - 谷歌表格/Javascript : Unable to search for a specific string in an array using indexOf()

javascript - 如何在 Node.js 4.2.3 中以不同的超时执行一个函数

javascript - 如何在数组react-final-form中设置错误

javascript - 如何在 redux 辅助函数中引用 React 组件的状态

javascript - 我的数据库数据未显示在 jQuery 数据表中