Я изучаю тест Mocha для js, но у меня странная проблема, и я не мог ее понять. Любой большой человек может мне помочь:
Я делаю этот тестовый пример:
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]));
});
Но он возвращает undefined для этой функции фильтра, но когда я удаляю ключевое слово 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]));
});
Может ли кто-нибудь объяснить это мне? Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У вас опечатка, ваша закрывающая скобка ) для 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 ваш тест прошел .)