#javascript #node.js #mocha.js
#javascript #node.js #mocha.js
Вопрос:
Я изучаю тест 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]));
});
Кто-нибудь может мне это объяснить?
Спасибо
Ответ №1:
У вас опечатка, ваш close paren )
для 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
ваш тест пройден.)