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