使用Mocha和Chai声明Javascript数组中包含的值

时间:2018-12-14 16:53:07

标签: javascript mocha chai

在给定以下代码的情况下,对于导入到测试套件中的数组中包含的值进行断言的一种最佳/最优方法是什么(显然不起作用:)

it('Grant all email phone perms', async() => {
  const vals = await doSomeStuff(page, frame);

  expect(vals[0]).to.equal('option| 1');
  expect(vals[1]).to.equal('option| 2');
  expect(vals[2]).to.equal('option| 3');
  expect(vals[3]).to.equal('option| 4');

});

在运行时,我可以看到vals包含以下内容:

vals: Object{val1: "option|1", val2: "option|2", val3: "option|3", val4: "option|4"}

我确定这是基本知识,但我只是在学习!

谢谢。

3 个答案:

答案 0 :(得分:1)

如果您确切知道结果应该是什么样子,则可以使用深等于。

expect(vals).to.deep.equal({val1: "option|1", val2: "option|2", val3: "option|3", val4: "option|4"})

看起来您的数据是一个对象,而不是数组。但是深层平等同样适用于数组

答案 1 :(得分:0)

或者,我们也可以使用比eql短的deep.equal

expect(vals).to.eql({val1: "option|1", val2: "option|2", val3: "option|3", val4: "option|4"})

参考: https://www.chaijs.com/api/bdd/#method_eql

答案 2 :(得分:0)

我仍在寻找一种进行局部处理的方法(deepEqual对我不起作用)。但是您的对象是对象,而不是数组。对原始代码的最少更改如下:

  expect(vals.val1).to.equal('option| 1');
  expect(vals.val2).to.equal('option| 2');
  expect(vals.val3).to.equal('option| 3');
  expect(vals.val4).to.equal('option| 4');