跳转到主要内容
版本:26.倍

Evitar嘲笑de módulos

Jest允许您在测试中模拟整个模块,这对于测试您的代码是否正确地调用了该模块的函数非常有用。不允许,我们可以用一个模来模仿别人archivos de测试。因此,有必要加入implementación原来的y不是implementación mock。

请考虑描述一项测试funcióncrearUsuario:

/ / crearUsuario.js
进口 获取 “node-fetch” ;
出口 常量 crearUsuario = 异步 ( ) = > {
常量 respuesta = 等待 获取 ( “http://sitio.com/usuarios” , { 方法 : “职位” } ) ;
常量 idUsuario = 等待 respuesta 文本 ( ) ;
返回 idUsuario ;
} ;

你测试querrá ocupar un模拟para para función获取如果有一只羊驼,那它就会变成一只红色的羊驼。因为禁运,también有必要模拟返回值获取初步响应(envuelta en una承诺),请告诉我función我的护照号码。最初的方式escribirías联合国测试como el siguiente:

开玩笑 模拟 ( “node-fetch” ) ;
进口 获取 , { 响应 } “node-fetch” ;
进口 { crearUsuario } ”。/ crearUsuario ' ;
测试 ( 'crearUsuario美洲驼从los argumentos correctos y regrestos el Id del usuario' , 异步 ( ) = > {
获取 mockReturnValue ( 承诺 解决 ( 响应 ( “4” ) ) ) ;
常量 idUsuario = 等待 crearUsuario ( ) ;
预计 ( 获取 ) toHaveBeenCalledTimes ( 1 ) ;
预计 ( 获取 ) toHaveBeenCalledWith ( “http://sitio.com/usuarios” , {
方法 : “职位” ,
} ) ;
预计 ( idUsuario ) 托比 ( “4” ) ;
} ) ;

我不知道,那是encontrarías,那是funcióncreateUserfallaría, arrojando el errorTypeError: respuesta。文本is not a function(Error de Tipo: respuesta。text no es una función)。这是最重要的响应是importaste德node-fetch我们有一个假羊驼jest.mock根据archivo检验的原则),así没有这样的机会。

这是我的问题,这是我的问题funciónjest.requireActual。根据前功能,在档案测试中最重要的是:

/ /在什么
开玩笑 模拟 ( “node-fetch” ) ;
进口 获取 , { 响应 } “node-fetch” ;
/ /在
开玩笑 模拟 ( “node-fetch” ) ;
进口 获取 “node-fetch” ;
常量 { 响应 } = 开玩笑 requireActual ( “node-fetch” ) ;

这是为了允许我们对目标进行存档测试响应真正的德node-fetch, en lugar de una versión mock。这很重要pasará是正确的。