Javascript Jest TypeError:fetch不是函数

Javascript Jest TypeError:fetch不是函数,javascript,testing,jestjs,Javascript,Testing,Jestjs,我有以下Jest测试代码来测试对端点的提取: 但我得到了: 我知道movieApiService.getPopularMovies()是一个JavaScript获取请求,但是Node.js没有获取API,因此我如何使用Jest进行此测试?我无法使用您提供的代码进行测试,但是安装和导入npm模块应该可以做到这一点。试着让您的模拟实现特定于测试用例,如果多个测试用例必须使用同一个实现,那么在每个调用之前,将它们包装在描述块中 这有助于描述特定于测试场景的模拟实现 很难用您提供的代码测试您的实现,但

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

但我得到了:


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

我无法使用您提供的代码进行测试,但是安装和导入npm模块应该可以做到这一点。

试着让您的模拟实现特定于测试用例,如果多个测试用例必须使用同一个实现,那么在每个调用之前,将它们包装在
描述
块中

这有助于描述特定于测试场景的模拟实现

很难用您提供的代码测试您的实现,但让我们尝试将您的模拟实现切换到如下方式:

// This is just dummy data - change its shape in a format that your API renders.
const dummyMoviesData = [
    {title: 'some-tilte-1', body: 'some-1'},
    {title: 'some-tilte-2', body: 'some-2'},
    {title: 'some-tilte-3', body: 'some-3'}
];
global.fetch = jest.fn(() => Promise.resolve(dummyMoviesData));
现在,无论何时调用电影服务API,您都可能期望结果是dummyMoviesData的形状,甚至与之匹配

所以


应该做到这一点。

从2020年10月起,解决错误的方法是使用
whatwg fetch
包含polyfill for fetch

该软件包提供for
.fetch
,自2016年以来,Github.com员工对其进行了良好的支持和管理。建议了解
whatwg fetch
是否是合适的解决方案

Babel和es2015+的使用非常简单,只需添加到您的文件中即可

import'whatwg fetch'`
如果您与Webpack一起使用,请在应用程序入口点之前的入口配置选项中添加包

条目:['whatwg-fetch',…]
您可以在以下位置阅读全面的文档:

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

// This is just dummy data - change its shape in a format that your API renders.
const dummyMoviesData = [
    {title: 'some-tilte-1', body: 'some-1'},
    {title: 'some-tilte-2', body: 'some-2'},
    {title: 'some-tilte-3', body: 'some-3'}
];
global.fetch = jest.fn(() => Promise.resolve(dummyMoviesData));
expect(outcome).toMatchObject(dummyMoviesData);
expect(outcome).toEqual(dummyMoviesData);