Если вы используете Jest и вам нужно убедиться, что Array содержит Object, который соответствует заданной структуре, .toContain() вам не поможет. Значит, нужен другой подход.

Рассмотрим следующий сценарий. У вас есть массив объектов:

const state = [
  { type: 'START', data: 'foo' },
  { type: 'START', data: 'baz' },
  { type: 'END', data: 'foo' },
]

… И вы хотите проверить, что он содержит такой элемент { type: 'END' }.

Вы можете написать следующий тест:

expect(state).toEqual(          // 1
  expect.arrayContaining([      // 2
    expect.objectContaining({   // 3
      type: 'END'               // 4
    })
  ])
)

Вышеупомянутое читается как:

  1. вы ожидаете, что ваш массив равен
  2. массив, содержащий
  3. Объект, содержащий
  4. следующие свойства

ПРИМЕЧАНИЕ. expect.arrayContaining() необходимо передать Array[], даже если вы передаете один элемент.

Добавление его как настраиваемого сопоставителя

Как предложил Мартин Хохель, если вы часто используете это, вы можете создать настраиваемый сопоставитель, чтобы избежать многословной реализации: