Проблема с тестом Мокка при попытке использовать 'return' в функции - PullRequest
0 голосов
/ 12 марта 2019

Я изучаю тест Мокко для 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]));
    });

Но он возвращает неопределенное значение для этой функции фильтра, но когда я удаляю ключевое слово 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 Ответ

2 голосов
/ 12 марта 2019

У вас есть опечатка, ваш ближайший друг ) для 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 ваш тест пройден.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...