Jest TypeError: fetch 不是一个函数

新手上路,请多包涵

我有以下 Jest 测试代码来测试对 端点 的 _提取_:

 import MovieApiService from 'services/MovieApiService';
import movies from '../constants/movies';

describe('MovieApiService', () => {

  test('if jest work correctly', () => {
    expect(true).toBe(true);
  });

  test('get an array of popular movies', () => {
    global.fetch = jest.mock('../mocks/movies');
    const movieApiService = new MovieApiService();
    return movieApiService.getPopularMovies()
      .then(data => expect(data).toBe(movies));
  });
});

但我得到:

在此处输入图像描述

我知道 movieApiService.getPopularMovies() 是一个 _JavaScript 获取请求_,但 Node.js 没有获取 API,那么我如何才能使用 Jest 进行此测试?

原文由 Jean 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 828
2 个回答

我无法使用您提供的代码对此进行测试,但安装和导入 npm 模块 jest-fetch-mock 应该可以解决问题。

原文由 ajrussellaudio 发布,翻译遵循 CC BY-SA 3.0 许可协议

自 2020 年 10 月起,解决错误 TypeError: fetch is not function 的方法是使用 whatwg-fetch 包含用于提取的 polyfill。

该软件包为 .fetch 提供了一个 polyfill ,自 2016 年以来得到 Github.com 员工的良好支持和管理。建议 阅读注意事项 以了解 whatwg-fetch 是否是合适的解决方案。

Babel 和 es2015+ 的用法很简单,只需添加到你的文件中即可。

 import 'whatwg-fetch'

如果您使用 Webpack,请在应用程序入口点之前的入口配置选项中添加包。

 entry: ['whatwg-fetch', ...]

您可以在 https://github.github.io/fetch/ 阅读综合文档

如果您不熟悉 WhatWG,请在其 网站 上了解有关 Web 超文本应用程序技术工作组的更多信息。

原文由 gtzilla 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题