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

Мария Некрасова

Добрый день! Подскажите пожалуйста, где ошибка? https://ru.hexlet.io/code_reviews/393979 покрытие тестами в 1м столбце 100%, а во втором меньше. Я так понимаю, ошибка в самих тестах? я уже сверилась с решением учителя. В упор не вижу, что не так?

2 0

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

Добрый день, Мария!

FAIL  __tests__/tests.test.js

  ✓ check correct implementation (2133 ms)

  ✕ check wrong1 (395 ms)

  ○ skipped check wrong2
  ○ skipped check wrong3


  ● check wrong1

    expect(received).toBe(expected) // Object.is equality

    Expected: 3
    Received: 2

      32 |   setWrongImplementation('wrong1');
      33 |   const testsResult = await runTests();
    > 34 |   expect(getNumFailedTests(testsResult)).toBe(3);

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

Обратите внимание на эту проверку в тесте функции indexOf()

const arr = [1, 2, 3, 3, 4, 4];
expect(indexOf(arr, 4, -2)).toBe(4);

Функция indexOf при передаче отрицательного индекса использует его как смещение от конца массива. Эта проверка должна проверять как раз правильность работы функции с отрицательным индексом. При передаче индекса -2 функция должна начать поиск четверки со второго с конца элемента (т.е. с элемента с индексом 4). Функция возвращает индекс 4, здесь все верно.

Но что, если функция работает с отрицательными числами не правильно. При передаче отрицательного индекса она просто начинает поиск с начала массива. Вызов такой функции indexOf(arr, 4, -2) тоже вернет индекс 4, потому что это самый первый элемент со значением 4, который встречается в массиве. Получается, этот тест пропустит такой неправильный вариант функции.

Попробуйте немного изменить проверку так, чтобы проверялся индекс второй четверки в массиве

1

Мария Некрасова

спасибо за подробный ответ

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 проходит один тест, не могу понять какой именно. ...

Sergey Kirillov 25 апреля 2021 →

Почему не проходят тесты. Покрытие сделал 100%. enter link description here (https://ru.hexlet.io/code_...