Вопрос №54235 от пользователя Sergey Kirillov в уроке «Покрытие кода тестами (Code Coverage)», курс «JS: Автоматическое тестирование»

Sergey Kirillov

Почему не проходят тесты?
Покрытие сделал 100%.
Как правильно найти, какая функция из wrongN проходит тесты(не заваливается)?

FAIL  __tests__/tests.test.js
  ✓ check correct implementation (1181 ms)
  ✕ check wrong1 (224 ms)
  ○ skipped check wrong2
  ○ skipped check wrong3

Моё решение

3 0

Sergey Kirillov

Сделал.
Использовал отладочную печать, чтобы увидеть с каким результатом отрабатывают функции каждый раз.

Но пришлось как-то в ручную перебирать все 3 функции в wronN. Не понятно по выводу какие проходят тесты, а какие нет.

0

Максим Литвинов

Обратите внимание на эту проверку в первой версии ревью:

  const actual2 = slice([]);
  expect(actual2).toEqual(actual2);

Здесь выполняется проверка, что вызов функции с пустым массивом равен вызову функции с пустым массивом. Так как функция slice детерменированная, она всегда возвращает одинаковый результат, если её вызвать с одним и тем же аргументом. Эта проверка всегда будет проходить, не зависимо от того, правильный результат возвращает функция или нет. Но так как функция slice вызывается в тестах с пустым массивом, эта строка в функции выполняется и считается, что она покрыта тестами. Поэтому покрытие и получилось 100%, а тесты не проходили, т.к. эта проверка не отлавливает неправильный вариант функции.

0

Sergey Kirillov

Максим Литвинов, да, я тоже уже нашел этот баг. Спасибо.

0

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия

Фронтенд-разработчик

Разработка фронтенд-компонентов веб-приложений
23 июня 8 месяцев
Иконка программы Python-разработчик
Профессия

Python-разработчик

Разработка веб-приложений на Django
23 июня 8 месяцев
Иконка программы PHP-разработчик
Профессия

PHP-разработчик

Разработка веб-приложений на Laravel
23 июня 8 месяцев
Иконка программы Node.js-разработчик
Профессия

Node.js-разработчик

Разработка бэкенд-компонентов веб-приложений
в любое время 8 месяцев
Иконка программы Верстальщик
Профессия

Верстальщик

Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия

Java-разработчик

Разработка приложений на языке Java
23 июня 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
NEW

Разработчик на Ruby on Rails

Создает веб-приложения со скоростью света
22 июня 5 месяцев

Похожие вопросы

Вадим Зотов 07 июня 2021 →

Поймал себя на мысли, что весь курс просто смотрю решение учителя, ибо вообще не интересная тема. Но в этот...

Иван Федоров 30 мая 2021 →

Добрый день. Сделал отчет по покрытию тестами, написал тесты на пропущенные условия. Запустил новый тест на...

Kostya Pershin 19 мая 2021 →

Добрый день, не могу понять, почему не пропускает второй тест. https://ru.hexlet.io/code_reviews/407876 Как...

Илья Алиев 04 мая 2021 →

Здравствуйте, не могли бы подсказать в чем ошибка? Wrong3 проходит один тест, не могу понять какой именно. ...

Мария Некрасова 06 апреля 2021 →

Добрый день! Подскажите пожалуйста, где ошибка? https://ru.hexlet.io/code_reviews/393979 покрытие тестами в...