Два теста могут пройти успешно, пока applyDiscount(100) возвращает 100 вместо 90, указанных в билете. В одном из них функция заменяется макетом. Другой копирует ошибку границы в ожидаемое значение. Агенты любят создавать тысячи модульных тестов. Все зеленое. Э...
Два теста могут пройти успешно, пока applyDiscount(100) возвращает 100 вместо 90, указанных в билете. В одном из них функция заменяется макетом. Другой копирует ошибку границы в ожидаемое значение.
Агенты любят создавать тысячи модульных тестов. Все зеленое. Тогда обзор разбивает все это.
Агент уже реализовал мусорное решение и только потом написал для него обобщенные юнит-тесты. Эти тесты описывают только что написанный код. Итак, все они проходят, включая ошибки.
Когда агент пишет и код, и его тесты, не считайте зеленые галочки. Посмотрите, откуда берется каждое ожидаемое значение. Если оно исходит из кода агента, тест может повторить ошибку агента, а не отловить ее. Если это происходит из билета, спецификации или реального примера, и тест запускает реальный код и не удался из-за отсутствия поведения, он что-то проверяет.
Два шаблона, которые проходят вместе с ошибкой
Вот оба в TypeScript с Vitest. Предположим, агент пишет это для билета со скидкой:
// ценообразование.ц. Билет: заказы от 100 и более получают скидку 10%.
функция экспорта applyDiscount(всего: число): число {
общая сумма возврата > 100 ? итого * 0.9 : итого // ошибка: должно быть >=
}
Тест, имитирующий функцию, которую он должен выполнять.
