Chai - Ожидайте, что объект будет иметь глубокое свойство порядка игнорирования массива. - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно проверить, есть ли у payment свойство с именем transactions с ожидаемыми значениями:

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

Поскольку порядок transactions не указан, тест не проходит все время.

Как решить проблему, не меняя структуру теста?

Примечание. Я обнаружил плагин deep-equal-in-any-order, но, похоже, это не помогает.

1 Ответ

0 голосов
/ 13 ноября 2018

Выполните итерацию по массиву и проверьте, включает ли он каждый элемент.

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

Если вам нужно проверить, не является ли transactions неупорядоченный массив ожидаемых идентификаторов, проверьте и длину.

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

Если transactions имеет все ожидаемые идентификаторы и имеет одинаковую длину ожидаемых идентификаторов, то при правильном заказе он равен ожидаемым идентификаторам.

...