尝试在函数中使用“返回”时,Mocha测试出现问题

时间:2019-03-12 05:12:45

标签: javascript node.js mocha

我正在学习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关键字时,它可以正常工作:

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 个答案:

答案 0 :(得分:2)

您输入错误,)的封闭括号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,您的测试通过了。)