如何使用摩卡& chai测试js工厂函数

问题描述 投票:0回答:1

我试图测试我的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"))
    })
})

javascript unit-testing dom mocha chai
1个回答
0
投票

你只需要改变你的 assert 行来让你的测试工作。

var itemType = RadioBill();
itemType.radioButtons("call");
assert.equal(itemType.getCall(), 2.75);

在这里,首先要注意的是,调用 assert 时参数的顺序很重要。第一个参数是 实际 值,第二个是 预期 值。通常情况下,但并不总是实际值将是操作的结果,而预期值将是常数。

第二点是,在你的代码中,函数 radioButtons 并不返回一个值,它只是改变一个内部状态变量的值。但是已经有了 getCall 以获得该值,这就是我们的。assert 行在检查。

© www.soinside.com 2019 - 2024. All rights reserved.