【问题标题】:Problem with Mocha test when try to use the 'return' in the function尝试在函数中使用“返回”时 Mocha 测试出现问题
【发布时间】:2019-03-12 05:12:44
【问题描述】:

我正在学习 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]));
    });

谁能给我解释一下? 谢谢

【问题讨论】:

    标签: javascript node.js mocha.js


    【解决方案1】:

    你打错了,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 你的测试通过了。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2023-03-23
      • 2021-05-24
      • 2020-08-28
      相关资源
      最近更新 更多