Я уже пишу некоторые модульные тесты для критической бизнес-логики моих проектов, и я знаю о концепции и плюсах и минусах TDD - я просто никогда не ходил «все» как TDD »с написанием тестов в первую очередь. В настоящее время я работаю над проектом среднего размера, который я не развивал сам, и это довольно ужасно для работы: никаких тестов вообще, тесно связанной архитектуры, без инъекций зависимостей, устаревшей структуры MVC и т. Д. - менее идеальных , Я рассматриваю возможность только начинать с нуля с помощью Laravel или Symfony и применять TDD, чтобы действительно получить свободный и тестируемый код.PHP: разработка, основанная на тестах с приложением MVC
Я знаю, что это, вероятно, не очень хорошая идея просто погрузиться головой в TDD с таким «большим» проектом, поэтому я подумал, что сделаю пару тестовых проектов, чтобы увидеть, как TDD влияет на мой код и качество. Ради этого, давайте предположим, что это всего лишь «фильм-аренда-приложение-приложение» с регистрацией пользователя и функцией аренды фильма, если таковая имеется. Предположим также, что я уже сделал некоторые диаграммы UML, и у меня есть некоторые идеи о необходимых объектах, их отношениях и требуемой бизнес-логике.
С: С чего начать? Когда вы разговариваете с людьми, которые занимаются TDD в рамках MVC, некоторые люди склонны «изолировать» функцию бизнес-логики и запускать с приемочным тестом, а функция «Показать список доступных фильмов», а тест - «Перейдите к/фильмы и утверждать против какого-то HTML »или что-то еще. Для меня это не похоже на хорошее начало.
Лично я хотел бы начать с таких функций, как вход в систему пользователя или управление пользователями - довольно много вещей, которые скорее поддерживают приложение, чем сама бизнес-логика. Если бы я использовал этот подход, разве я не намеренно игнорировал бы функции, которые, как я уже знаю, потребуют? Давайте притворимся, что тест фильма-списка работает, поэтому я бы добавил еще один тест, например «OnlyLoggedInUserCanSeeMovieList», увидеть его сбой и добавить логику в код - логику, которую я должен знать, даже если бы я не написал первый тест вообще. Мне трудно поверить, что это приведет к улучшению кода, поскольку я намеренно не реализую функции, о которых я уже знаю.
Это личная индивидуальность или есть что-то вроде лучшей практики, чтобы начать меня? Как вы, ребята, начинаете с TDD в рамках Symfony или Laravel? Есть ли даже смысл делать чистую TDD в таких случаях, видя, что вся логика приложения уже обрабатывается и тестируется самой картой? Не поймите меня неправильно: я не хочу начинать новую войну за плюсы и минусы TDD - я уверен, что есть плюсы, на которые я могу извлечь выгоду, как только я полностью об этом узнаю. Тем не менее, прямо сейчас это похоже на смехотворное количество микропроцессов на довольно простой функциональности, и я чувствую, что лучше всего тестировать отдельные части логики приложения, а не выполнять все «Write test», увидеть, как это происходит, написать код , рефакторинг "итераций.
Спасибо за некоторые входные сигналы,
Chris