如何在测试中的另一个模块调用的模块中存根/模拟一个函数?

时间:2017-10-16 14:33:57

标签: node.js unit-testing testing

我正在尝试在模块X中测试一个函数。这是一个相当复杂的函数。在此函数中,我在模块Y中导入一个调用第三方服务的函数。如果我对模块X的测试没有导入模块Y,如何在模块Y中存根这个第三方服务?

2 个答案:

答案 0 :(得分:0)

您可以使用像mockery这样的项目在verify_obj接缝处进行修补:

  

如果您尝试过在Node.js中使用模拟,那么毫无疑问   发现让你的模仿迷上了并不容易   面对Node的模块加载系统。当你的源测试   通过require拉入它的依赖关系,你想要你的模拟   提供而不是原始模块,以实现真正的单元测试   你的代码。

https://github.com/mfncooper/mockery

答案 1 :(得分:0)

假设您的模块A1 = 5d + 5e + 5f + 60 + 61返回X执行的操作的结果,我们可以说Y如下:

X

您可以在这里更新const y = require ('y.js'); xWork () { return y.doWork().result; } 以注入X,如下所示:

Y

从那里你可以在测试中生成一个xWork (y) { return y.doWork().result; } 的模拟,可以像这样注入:

Y

Javascript允许您模拟任何内容,而不需要任何非常适合单元测试的依赖项。希望它有所帮助。