我的源代码:
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/