[英]How can I stub/mock a function in a module called by another module in a test?
我正在尝试测试模块X中的一个函数。这是一个相当复杂的函数。 在此函数中,我将在模块Y中导入一个调用第三方服务的函数。 如果我对模块X的测试未导入模块Y,如何在模块Y中存根此第三方服务?
您可以使用诸如嘲笑之类的项目来修补require
接缝:
如果您曾尝试在Node.js中使用模拟,那么您无疑会发现,面对Node的模块加载系统将模拟连接起来并非易事。 当被测源通过require引入其依赖项时,您希望提供的模拟而不是原始模块能够对代码进行真正的单元测试。
假设您的模块X
返回Y
执行操作的结果,我们可以说X
如下:
const y = require ('y.js');
xWork () {
return y.doWork().result;
}
在这里,您可以更新X
以像这样注入Y
:
xWork (y) {
return y.doWork().result;
}
从那里,您可以在测试中生成Y
的模拟物,可以像这样注入:
yMock = {
doWork: () => {
return { result: 'mockedResult' };
}
};
x.xWork(yMock); // call x with y mock
Javascript允许您模拟任何东西而无需任何依赖,这对于单元测试是完美的。 希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.