我试图测试我的DOM项目,所以它应该确保成本是2.75,短信是0.75。它返回一个断言错误,说预期2.75等于undefined。我需要帮助访问call和sms的正确值.这是我的工厂函数。
var callCost = 0;
var smsCost = 0;
var totalCost = 0;
const warning = 30;
const critical = 50;
function getCall() {
return callCost;
}
function getSms() {
return smsCost;
}
function getTotal() {
totalCost = callCost + smsCost;
return totalCost;
}
function radioButtons(selectedBill) {
if (selectedBill === "call") {
callCost += 2.75;
} else if (selectedBill === "sms") {
smsCost += 0.75;
}
}
function totalClassName() {
if (getTotal() >= warning && getTotal() < critical) {
return "warning";
} else if (getTotal() >= critical) {
return "critical";
}
}
return {
getCall,
getSms,
getTotal,
radioButtons,
totalClassName
}
}
describe('The radio-bill function', function(){
it('Should be able to add call at 2.75', function(){
var itemType = RadioBill();
itemType.radioButtons("call");
assert.equal(2.75, itemType.radioButtons("call"))
})
})
你只需要改变你的 assert
行来让你的测试工作。
var itemType = RadioBill();
itemType.radioButtons("call");
assert.equal(itemType.getCall(), 2.75);
在这里,首先要注意的是,调用 assert 时参数的顺序很重要。第一个参数是 实际 值,第二个是 预期 值。通常情况下,但并不总是实际值将是操作的结果,而预期值将是常数。
第二点是,在你的代码中,函数 radioButtons
并不返回一个值,它只是改变一个内部状态变量的值。但是已经有了 getCall
以获得该值,这就是我们的。assert
行在检查。