尝试在函数中使用 'return' 时出现 Mocha 测试问题
Problem with Mocha test when try to use the 'return' in the function
我正在学习 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 未定义该过滤器函数,但是当我删除 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]));
});
谁能给我解释一下?
谢谢
您打错了字,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
你的测试通过了。)
我正在学习 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 未定义该过滤器函数,但是当我删除 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]));
});
谁能给我解释一下? 谢谢
您打错了字,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
你的测试通过了。)