我正在学习JS的Mocha测试,但是有一个奇怪的问题,无法解决。任何大个子都可以帮助我:
我做这个测试用例:
it("remove all the number larger than 10", () => {
function filter(arr) {
return arr.filter(number => number < 11);
}
assert.equal(filter([1, 3, 3, 5, 10, 29, 3], [1, 3, 3, 5, 10, 3]));
});
但是它为该过滤器函数返回未定义,但是当我删除return关键字时,它可以正常工作:
it("remove all the number larger than 10", () => {
function filter(arr) {
arr.filter(number => number < 11);
}
assert.equal(filter([1, 3, 3, 5, 10, 29, 3], [1, 3, 3, 5, 10, 3]));
});
有人可以向我解释吗? 谢谢
答案 0 :(得分:2)
您输入错误,)
的封闭括号filter
应该紧接在第一个数组之后,而不是在两个数组之后。
此外,要比较数组,请使用assert.deepEqual
而不是assert.equal
:
it("remove all the number larger than 10", () => {
function filter(arr) {
return arr.filter(number => number < 11);
}
assert.deepEqual(filter([1, 3, 3, 5, 10, 29, 3]), [1, 3, 3, 5, 10, 3]); // SUCCESS
});
(删除return
关键字时传递它的原因是两个数组都传递了filter
,然后返回了undefined
。assert.equal
仅被调用带有一个参数,因此第二个参数隐式为undefined
。由于undefined
== undefined
,您的测试通过了。)