Chai - 期望对象具有深度 属性 的数组忽略顺序

Chai - Expect an object to have deep property of an array ignore order

我需要检查 payment 是否有一个名为 transactions 的 属性 具有预期值:

expect(payment).to.have.deep.property('transactions', [
    TRANSACTION_ID_1,
    TRANSACTION_ID_2,
]);

由于没有指定transactions的顺序,所以一直没有通过

如何在不改变测试结构的情况下解决问题?

注意:我找到了 deep-equal-in-any-order 插件,但似乎没有用。

遍历数组并检查它是否包含每一项。

[TRANSACTION_ID_1, TRANSACTION_ID_2].forEach(id => {
  expect(payment).to.have.deep.property('transactions').that.includes(id);
});

如果您需要检查 transactions 是预期 ID 的无序数组,那么还要检查长度。

expect(payment).to.have.deep.property('transactions').that.has.lengthOf(2);

transactions 具有所有预期 ID 且具有相同长度的预期 ID 时,如果正确排序,它等于预期 ID。