2017-01-22 3 views
0

Я уже пишу некоторые модульные тесты для критической бизнес-логики моих проектов, и я знаю о концепции и плюсах и минусах TDD - я просто никогда не ходил «все» как TDD »с написанием тестов в первую очередь. В настоящее время я работаю над проектом среднего размера, который я не развивал сам, и это довольно ужасно для работы: никаких тестов вообще, тесно связанной архитектуры, без инъекций зависимостей, устаревшей структуры MVC и т. Д. - менее идеальных , Я рассматриваю возможность только начинать с нуля с помощью Laravel или Symfony и применять TDD, чтобы действительно получить свободный и тестируемый код.PHP: разработка, основанная на тестах с приложением MVC

Я знаю, что это, вероятно, не очень хорошая идея просто погрузиться головой в TDD с таким «большим» проектом, поэтому я подумал, что сделаю пару тестовых проектов, чтобы увидеть, как TDD влияет на мой код и качество. Ради этого, давайте предположим, что это всего лишь «фильм-аренда-приложение-приложение» с регистрацией пользователя и функцией аренды фильма, если таковая имеется. Предположим также, что я уже сделал некоторые диаграммы UML, и у меня есть некоторые идеи о необходимых объектах, их отношениях и требуемой бизнес-логике.

С: С чего начать? Когда вы разговариваете с людьми, которые занимаются TDD в рамках MVC, некоторые люди склонны «изолировать» функцию бизнес-логики и запускать с приемочным тестом, а функция «Показать список доступных фильмов», а тест - «Перейдите к/фильмы и утверждать против какого-то HTML »или что-то еще. Для меня это не похоже на хорошее начало.

Лично я хотел бы начать с таких функций, как вход в систему пользователя или управление пользователями - довольно много вещей, которые скорее поддерживают приложение, чем сама бизнес-логика. Если бы я использовал этот подход, разве я не намеренно игнорировал бы функции, которые, как я уже знаю, потребуют? Давайте притворимся, что тест фильма-списка работает, поэтому я бы добавил еще один тест, например «OnlyLoggedInUserCanSeeMovieList», увидеть его сбой и добавить логику в код - логику, которую я должен знать, даже если бы я не написал первый тест вообще. Мне трудно поверить, что это приведет к улучшению кода, поскольку я намеренно не реализую функции, о которых я уже знаю.

Это личная индивидуальность или есть что-то вроде лучшей практики, чтобы начать меня? Как вы, ребята, начинаете с TDD в рамках Symfony или Laravel? Есть ли даже смысл делать чистую TDD в таких случаях, видя, что вся логика приложения уже обрабатывается и тестируется самой картой? Не поймите меня неправильно: я не хочу начинать новую войну за плюсы и минусы TDD - я уверен, что есть плюсы, на которые я могу извлечь выгоду, как только я полностью об этом узнаю. Тем не менее, прямо сейчас это похоже на смехотворное количество микропроцессов на довольно простой функциональности, и я чувствую, что лучше всего тестировать отдельные части логики приложения, а не выполнять все «Write test», увидеть, как это происходит, написать код , рефакторинг "итераций.

Спасибо за некоторые входные сигналы,

Chris

ответ

0

Я бы сказал, первое, что нужно сделать некоторые исследования, чтобы найти пучки вы будете using.For примером вы говорите, что вы хотели бы начать блок тестирования вашего управление пользователями, за исключением fSymfony, у вас уже есть отличные пакеты управления пользователями, которые уже поставляются с их тестовыми сериями. Итак, я бы сказал, что первый шаг при запуске проекта youre - найти то, что уже существует и будет соответствовать вашим потребностям. После абстрагирования больше всего вы можете просто посмотреть, с чего начать (обычно пишите тесты, чтобы убедиться, что все связки, которые вы используете, работают правильно вместе).

Надеюсь, что поможет вам начать работу

Смежные вопросы