javascript - Mocha 和 Chai ,我如何模拟预期结果?

标签 javascript unit-testing mocha.js chai

我的源代码:

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);
    });
});

结果是我自己计算的,我确实认为不正确。

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

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

最佳答案

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

再次强调,无论多么复杂,预期值都必须易于验证且足够简单,以便人们能够通过 SUT 的演练得出结果。希望这能回答您的问题。

关于javascript - Mocha 和 Chai ,我如何模拟预期结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787827/

相关文章:

javascript - JS 正则表达式从字符串中删除 IMG 标签

java - 模拟 toURI() 方法时出现 AssertionFailedError

Java测试异常

javascript - ES6 [Symbol.iterator] 不是带数组的函数

javascript - Mocha 测试框架的 test.describe 返回值

javascript - 在 Mocha 中使用请求调用测试函数

typescript - 如何避免 TypeScript 中的 if/else 与 mocha 和未定义的返回?

javascript - 如何更改全日历上的光标指针?

javascript - 当 SQLite 列为 true 时,将类添加到列表元素

javascript - AngularJS 数据绑定(bind)不适用于外部 Controller 文件