繁体   English   中英

摩卡咖啡和柴,我怎么能嘲笑预期的结果?

[英]mocha & chai, how can I mock expect result?

我的源代码:

function getElementCountOfArray(arr) {
    var countObj = {};
    arr.forEach((element) => {
        if(countObj[element]) {
            countObj[element] ++;
        } else {
            countObj[element] = 1;
        }
    });

    return countObj;
}

module.exports = getElementCountOfArray;

我的测试代码:

describe('getElementCountOfArray', function() {

    it('test case 1', function() {
        var numArray = [2, 2, 3, 6, 7, 7, 7, 7, 8, 9];

        var result = {
            2: 2,
            3: 1,
            6: 1,
            7: 4,
            8: 1,
            9: 1
        };

        expect(getElementCountOfArray(numArray)).to.eql(result);
    });
});

result是我自己计算的,我真的认为是不正确的。

如果result是复杂的数据结构,则手动计算不是一个好主意。 我可能对result有误。

那么,模拟expect结果的“正确”方法是什么?

我要说的是单元测试应该如何工作。 SUT(被测系统)返回的结果(即您正在测试的方法)是在SUT中完成处理的结果。 要测试SUT, 您必须事先知道最终结果是什么 这就是为什么建议使用简单的预期残值来测试SUT结果的原因,您确信这是正确的 当然,某些结果可能是复杂的数据结构,但是您可以选择仅使用一个或两个元素对期望的结构进行存根。

再次,期望值,无论多么复杂,都必须易于验证和简单到足以使某人能够使用空运行的SUT到达。 希望这能回答您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM