隐藏的测试不断失败

时间:2018-11-22 21:47:13

标签: javascript node.js

我已经编写了这段代码,该代码返回一个奇数或偶数数组,具体取决于哪个参数彼此之间更大。

    const number_game = (x, y) => {
    //   Code here
    let numbersArray = [];
    if (typeof x === 'number' && typeof y === 'number') {
        if (x > y) {
            for (let i = y + 1; i < x; i++) {
                if (i % 2 === 0) {
                    numbersArray.push(i);
                }
            }
        }
        if (y > x) {
            for (let i = x + 1; i < y; i++) {
                if (i % 2 === 1) {
                    numbersArray.push(i);
                }
            }
        }
        if (y === x) {
            return numbersArray;
        }


        return numbersArray;
    }
    else {
        return `${x} and ${y} should be numbers`
    }
}
console.log(number_game(3,13));

我已经在可能的情况下对其进行了测试,但是它可以正常工作,但是它一直在在线隐藏测试中失败,原因是“期望[Array(9)]等于[Array(11)]或预期的[Array(10)]深度等于[Array(11)]” 。我试图以不同的方式调整我的解决方案,但仍然没有用。我想知道自己在做错什么以及如何纠正。

PS :在deepEquality上进行的搜索显示:“ assert.deepEqual()方法使用==运算符测试两个对象及其子对象是否相等”。 我只是似乎无法指出错误的具体位置。

2 个答案:

答案 0 :(得分:0)

我唯一能做的就是简化一下。

const number_game = (x, y) => {
  var isOdd = x > y;
  let numbersArray = [];
  if (typeof x != "number" || typeof y != "number") {
    return "${x} and ${y} should be numbers";
  }
  for (let i = (isOdd ? y : x) + 1; i < (isOdd ? x : y); i++) {
    if (i % 2 === (isOdd ? 0 : 1)) {
      numbersArray.push(i);
    }
  }
  return numbersArray;
};

console.log(number_game(13, 3));

答案 1 :(得分:0)

因此,经过大量的研究和调查,我发现问题规格和测试用例存在冲突。根据问题规范,输入(12,0)应该产生=> [2,4,6,8,10],但是该结果将返回此错误,因为测试失败“ expected [Array(9)]高度等于[Array(11)]或期望[Array(10)]等于[Array(11)]“ 。但是,我观察到,当我从让i = x + 1和y = x + 1中删除+ 1并在i <= x和i <= y终止条件上加上等号时,测试通过。但是,调整将返回此结果[0、2、4、6、8、10],这与问题说明不正确。这是通过测试的代码:

const number_game = (x, y) => {
    //   Code here
    let numbersArray = [];
    if (typeof x === 'number' && typeof y === 'number') {
        if (x > y) {
            for (let i = y; i <= x; i++) {
                if (i % 2 === 0) {
                    numbersArray.push(i);
                }
            }
        }
        else {
            for (let i = x; i <= y; i++) {
                if (i % 2 === 1) {
                    numbersArray.push(i);
                }
            }
        }
        return numbersArray;
    }
    else {
        return `${x} and ${y} should be numbers`
    }
}