gRPC的Jest模拟失败,并带有手动定义

austinrulezd00d

我正在尝试测试React组件,该组件的存储正在执行一些gRPC通信,因此需要使用grpc node_module。我的测试是通过链接导入grpc,因为它导入了React组件,后者又导入了商店,而后者又导入了grpc。

很好,但是自动模拟失败了: Error: The specified module could not be found. \\?\C:\Dev\Projects\Electron\PAT\client\app\node_modules\grpc\src\node\extension_binary\grpc_node.node

所以,我把一个嘲笑文件夹相邻的每玩笑node_modules文档和它的我创建grpc.js内:

const grpc = {};
export default grpc;  

这使我更进一步,但是: TypeError: grpc.makeGenericClientConstructor is not a function

可以理解,因此我尝试将grpc.js更改为:

const grpc = { makeGenericClientConstructor: () => { return; } };

但是我继续得到同样的错误: TypeError: grpc.makeGenericClientConstructor is not a function

我尝试使用jest.setMock和jest.mock,似乎都没有帮助。

有什么想法/建议/解决方法吗?

不幸的是,通过使用export default grps,您的模块实际上会导出es模块:

{
   default: {
       makeGenericClientConstructor: ...
   }
}

您可以确认是否正确,如果您有访问权限grpc.default.makeGenericClientConstructor

如果您告诉Jest(通过babel)将ES模块模拟编译为CommonJS,则可以在您的环境中使用ES模块,但是如果您不这样做,则可以使用以下方法将模拟导出为CommonJS模块:

module.exports = grpc;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章