在没有明显原因的情况下,对简单代码的Mocha测试失败

时间:2018-11-25 07:03:30

标签: javascript arrays node.js unit-testing mocha

这是一种在线编程测试。该系统允许您编写问题的解决方案,并根据其(平台的内部)单元测试进行检查。

这是问题的摘要:

  

编写一个接受2个参数(x,y)的函数。

     

如果x大于y,则返回偶数数组   在x和y之间。

     

如果x小于y,则返回之间的奇数数组   x和y。

     

如果x和y相等,或者输入无效/不是整数,则   返回一个空数组。结果数组不包含x和y   在每种情况下。

     

例如,如果x,y为整数10、2,则该函数将返回   所有2到10之间的偶数,即[4,6,8]。

这是我的代码:

const numGame = (x, y) => {
  let result = [];
  if (!Number.isInteger(x) || !Number.isInteger(y)) {
    return result;
  }
  if (x > y) {
    for(let i = y + 1; i < x; i++)
      if(i%2 == 0) result.push(i);
  }
  if (x < y) {
    for(let i = x + 1; i < y; i++) {
      if(i%2 == 1 || i%2 == -1) result.push(i); 
    } 
  }

  return result;
}

这是我自己的容易通过的测试:

describe('Challenge', function() {
  it('should return the right array', function() {
    assert.deepEqual(numGame(2,12), [3, 5, 7, 9, 11]);
    assert.deepEqual(numGame(12, 2), [4, 6, 8, 10]);
    assert.deepEqual(numGame(-6, 12), [-5, -3, -1, 1, 3, 5, 7, 9, 11]);
    assert.deepEqual(numGame(12, -4), [-2, 0, 2, 4, 6, 8, 10]);
    assert.deepEqual(numGame(0,0), []);
  });
});

我上面的测试通过了,但是当我提交代码时,它未能通过内部测试并返回以下内容:

should return the right array
  expected [ Array(9) ] to deeply equal [ Array(11) ]

该错误似乎很奇怪。没有办法看到针对我的解决方案进行测试的代码,因此确实令人沮丧。请查看我的解决方案,以查看是否存在一些无法解决的极端情况,并可能提供更好的解决方案/算法。

我还想知道该平台的内部测试是否有可能以某种方式出错?谢谢!

1 个答案:

答案 0 :(得分:0)

事实证明,针对我的代码进行测试的平台测试实际上是错误的。我编辑了代码以包含x和y,并通过了测试。