NodeJS:对类调用构造函数和其他类函数的单元测试



我需要为下面的classA编写一个单元测试。我不想测试方法a,而是设置一个伪方法:

const classB = require('classB');
function a() {
const b = classB();
b.methodA();
}

我试着使用重新布线:

const classA = rewire('classA');
const classBMock = require('classB');
classBMock.prototype.methodA = function() {
}
classA.__set__('classB', classBMock);
classA.a();

有更好的方法来实现我的目标吗?

谢谢!

你做得对。使用rewire包,设置一个模拟的classB对象。但不建议用模拟方法覆盖原型上的方法。您必须在执行测试用例后将其恢复到原始版本。否则,具有模拟methodAclassB可能导致其他测试失败。

更好的方法是使用依赖项注入。为每个测试用例创建一个模拟的classB对象,并将其传递到a函数中,如下所示:

function a(b) {
b.methodA();
}
// test file
const b = { 
methodA() {
console.log('stubbed methodA');
} 
}
a(b);

这样可以更好地确保测试用例之间测试替身的隔离。

相关内容

  • 没有找到相关文章

最新更新