我有一个带有嵌套If-Then语句的方法。
被测方法两次调用 second 方法。
类似几乎的东西(非常简化):
module.exports = {
method_under_test: async function () {
let stat = await privateMethod();
if (stat == 0) { return true; }
else if (stat == 1) { return false; }
else if (stat == 2) {
doSomething();
stat = await privateMethod();
if (stat == 0) { return true; }
else { return false; }
}
else { return false; }
}
}
function privateMethod() {
return new Promise((resolve, reject) => {
doAsync((rep) => {
if (rep) {
if (rep === 'something') { resolve(0); }
else { resolve(1); }
} else {
resolve(2);
}
});
});
}
请注意,如果stat == 2
,则将执行一个进程,并再次运行private方法以确保该进程成功运行。
注意:我无法在自己的私有方法中更改doAsync
方法。我所能做的就是解释结果。
所以,我的问题是...我想伪造我的privateMethod
,以便在第一次调用时返回2
,而在第二次调用时返回1
,并允许我测试嵌套的If-Else的else
部分。
有人可以指出正确的方向吗?
谢谢。