Сопоставитель toContain
проверяет, есть ли элемент в массиве, используя строгую проверку на равенство. Это означает, что если вы не передадите ссылку на объект, который вы пытаетесь проверить, он всегда вернет false.
Таким образом, если вы проверите:
expect(response.data).toContain({ _id: 'trivial', count: 1 });
Это не удастся потому что, хотя ваш response.data
содержит объект с теми же атрибутами и значениями, это не тот же объект (он не указывает на одну и ту же ссылку).
Вот причина:
expect(response.data).not.toContain({ _id: 'neutral', count: 0 });
Всегда будет возвращать true.
Если вы хотите проверить заданную c структуру и значения, вы должны использовать toContainEqual
matcher:
expect(response.data).not.toContainEqual({ _id: 'hate', count: 1 });
Кроме того, если вы хотите проверить всю структуру и значения данных вашего ответа, вы можете просто использовать toEqual
matcher:
expect(response.data).toEqual([
{ _id: 'dislike', count: 1 },
{ _id: 'hate', count: 1 },
{ _id: 'trivial', count: 1 }
]);
Это проверит что response.data
имеет именно ту структуру и значения, которые вы передаете в качестве параметра. Для расширения он проверяет, что он не содержит никаких других значений.