Выбор ответа Middle Jest и Vitest обновлено

Тест без await

Вопрос

Тест всегда зелёный, хотя API возвращает ошибку. В чём дело?

it('загружает профиль', async () => {
  expect(api.getProfile(1)).resolves.toMatchObject({ id: 1 });
});

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

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

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

Коротко

Правильный ответ: Нет await: тест завершился раньше, чем промис отклонился. Без await (или return) раннер не ждёт промис, тест завершается успешно, а отклонение проверки случится уже после него, в лучшем случае с предупреждением. resolves есть в обоих раннерах, toBe тут ни при чём, имя теста не влияет.

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

  1. resolves не поддерживается в Vitest, проверка молча пропускается
  2. Для промисов нужен toBe, а toThrow проверяет синхронный код
  3. Нет await: тест завершился раньше, чем промис отклонилсяправильный ответ
  4. Имя теста должно начинаться с test_, иначе проверки не учитываются

Разбор

Без await (или return) раннер не ждёт промис, тест завершается успешно, а отклонение проверки случится уже после него, в лучшем случае с предупреждением. resolves есть в обоих раннерах, toBe тут ни при чём, имя теста не влияет.

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

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