尝试在函数中使用 '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 被传递给两个数组,然后返回 undefinedassert.equal 只是被调用时带有一个参数,所以它的第二个参数隐含地是 undefined。因为 undefined == undefined 你的测试通过了。)