Выбор ответа Junior Jest и Vitest спрашивают часто обновлено

toBe для объектов

Вопрос

Почему падает expect({ a: 1 }).toBe({ a: 1 })?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: toBe сравнивает ссылки, а это два разных объекта. toBe проверяет идентичность: для объектов это одна и та же ссылка.

Варианты ответа

  1. toBe сравнивает ссылки, а это два разных объектаправильный ответ
  2. Объекты надо сравнивать через ==, а toBe это ===
  3. toBe сравнивает объекты по строке JSON, а ключи разные
  4. Это баг Jest, в Vitest такой тест проходит

Разбор

toBe проверяет идентичность: для объектов это одна и та же ссылка. Для сравнения содержимого нужен toEqual или toStrictEqual. Нестрогое равенство для объектов тоже сравнивает ссылки, так что оно не поможет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.