是什么导致我对IndexOf数组进行单元测试的AssertionError故障

时间:2019-06-28 01:24:05

标签: javascript arrays object chai

我正在编码挑战。有一段代码与测试一起编写,以测试该代码。我对编码非常陌生,不确定从哪里开始。

我得到的错误是:“您应该能够确定项目在数组中的位置”‣

AssertionError: expected undefined to deeply equal 2

我尝试声明变量并编写循环,但被告知这些不是解决此问题的方法。我的目标是使测试通过。

这是编写的代码部分:

exports = typeof window === 'undefined' ? global : window;

exports.arraysAnswers = {
  indexOf: function(arr, item) {

  },

这是tests文件夹中的代码:

if ( typeof window === 'undefined' ) {
  require('../../app/arrays');
  var expect = require('chai').expect;
}

describe('arrays', function() {
  var a;

  beforeEach(function() {
    a = [ 1, 2, 3, 4 ];
  });

  it('you should be able to determine the location of an item in an array', function() {
    expect(arraysAnswers.indexOf(a, 3)).to.eql(2);
    expect(arraysAnswers.indexOf(a, 5)).to.eql(-1);
  });

我希望考试能够通过,但不知道应该从哪里开始。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您需要从indexOf函数返回一些信息:

indexOf: function(arr, item) {
  let index = -1;
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === item) {
      index = i;
      break;
    }
  }
  return index;
}

就像JavaScript中的本机indexOf函数一样,如果找不到该项目,它将返回-1