【发布时间】:2020-04-13 18:50:38
【问题描述】:
我是 Node.js 的新手。现在我正在使用 Mocha 和 Chai 编写单元测试,但在测试匿名函数中的代码时发现自己陷入了困境,这些匿名函数被编写为异步函数的回调。 p>
我重新创建了一些示例代码来解释我的情况。拥有这些异步函数:
asyncAddition = function (a, b, callback) {
setTimeout(() => {
callback(a + b);
}, 3000);
}
asyncSubstraction = function (a, b, callback){
setTimeout(() => {
callback(a - b);
}, 3000);
}
我想在一个类方法calculate中使用它们,它不接受任何回调作为参数,而只是两个操作数a和b和一个具有计算类型的字符串,这是异步进行的并将结果放在result 成员中:
class Example{
constructor(){
this.result = null;
}
calculate(a, b, action){
if (action == "add") {
asyncAddition(a, b, (result) =>{
this.result = result;
console.log("Addition result is: " + result);
});
}
else if (action == "substract") {
asyncSubstraction(a, b, (result) =>{
this.result = result;
console.log("Substraction result is: " + result);
});
}
}
}
由于result 中的值是在回调代码中设置的,我如何根据给定的参数为calculate 方法编写一个正确的测试来检查result 的值 ?
【问题讨论】:
标签: javascript node.js unit-testing anonymous-function asynccallback