使用 Mocha 和 Chai 断言 Javascript 数组中包含的值

Asserting values contained within Javascript Arrays using Mocha and Chai

什么是 good/optimal 断言数组中包含的值的方法,导入到测试套件中,给定以下代码(这显然不起作用:)

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"}

我确定这是基本的东西,但我只是在学习!

谢谢。

如果您确切知道结果应该是什么样子,您可以使用 deep equal。

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

而且您的数据看起来是一个对象而不是数组。但深度平等也适用于数组

作为替代,我们也可以使用比deep.equal

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

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

我仍在寻找一种方法来进行部分计算(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');