В проектах front-end (сделанных на фреймворках типа Angular или React), когда мы правильно инкапсулируем сложные функциональные возможности, компоненты, которые действительно имеют какое-то отношение к бизнес-логике, обычно становятся простыми, как форма с валидациями по умолчанию, предоставляемыми фреймворком (или lib).
Итак, имеют ли юнит-тесты типа "тестирование, если неправильный ввод в форму предотвращает отправку", "если правильный ввод делает отправку разрешенной" действительно ценность? Тестирование того, работает ли валидация этих компонентов, не было бы тем же самым, что и тестирование библиотеки Form (или фреймворка в случае Angular)?
Стоит ли тестировать простые детали?
Может быть?
Мне платят за работающий код, а не за тесты, поэтому моя философия заключается в том, чтобы тестировать как можно меньше, чтобы достичь заданного уровня уверенности — Кент Бек, 2008 г.
В контексте разработки через тестирование «программистские тесты» мотивированы анализом и дизайном, а не проверкой (см. Цель, огонь — Бек, 2001).
Для кода, который «настолько прост, что явно не имеет недостатков», создание набора тестов — это инвестиция, которую вы можете отложить до тех пор, пока не обнаружите, что требуется дополнительная сложность.
Если вы знаете о промежутке между решением и обратной связью во время программирования и используете соответствующие методы для контроля этого промежутка, то вы применяете TDD «правильно», даже если соответствующий метод, который вы используете, не является автоматической проверкой. . (Примечание: это из Test Driven Development by Example, того же источника, который говорит, что мы должны написать неудачный автоматический тест, прежде чем писать какой-либо код. Смешанные сигналы смешаны.)
Если вы рассматриваете тесты для проверки, то соображения немного другие. В конечном счете, мы (а не авторы библиотеки форм или фреймворка) несем ответственность перед нашими клиентами/целевыми донорами/владельцем золота. Поэтому нам нужно понять, какие риски мы пытаемся снизить, какие стратегии смягчения доступны, и какая из этих стратегий предлагает наилучшую комбинацию компромиссов.