TDD/BDD, в частности, для приложения Rails

Насколько гранулярным следует пользоваться при использовании методов TDD/BDD для разработки приложения? В частности, что касается приложения Rails.

Будете ли вы тестировать каждое отдельное поле, а затем правильно переносить его? Таким образом, каждое поле будет иметь свою собственную миграцию? Что бы вы на самом деле проверили, чтобы убедиться, что поле их?

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

Большинство примеров, которые я видел, используют валидацию в качестве примера. Я знаю, что до этого было написано намного больше кода, и я просто не знаю, как проверить самые простые вещи, такие как "должно иметь поле имени".

Буду признателен за любую оказанную помощь.

СПАСИБО!

2 ответа

Решение

Я не буду бурить это далеко вниз. На самом деле, я обычно не тестирую свои миграции, и, конечно, не стоит тратить ваше время (в целом) на тестирование геттеров и сеттеров. Придерживайтесь тестов, которые учат вас системе и выражают нетривиальные функциональные требования кода.

Что касается того, с чего начать: выберите требование, которое вы знаете, как тестировать - одно без внешних зависимостей, другое, где путь абсолютно ясен. Напишите тест (ы), чтобы описать желаемое поведение, реализовать его и реорганизовать код, чтобы удалить все уродство, которое вы, возможно, добавили во время реализации. После того, как вы сделали это для нескольких функций в списке, вы, вероятно, обнаружите, что некоторые из нечетких функций становятся в центре внимания, потому что вы создали необходимые им строительные блоки / зависимости.

Хорошей книгой, в которой более подробно рассматриваются методы тестирования, чем AWDR или The Rails Way, является Книга RSpec, бета-версия которой доступна в электронном виде.

Используете ли вы какие-либо инструменты для TDD/BDD, такие как огурец?

У них есть хорошая информация об использовании Cucumber с Rails.

По сути, напишите свою функцию, а затем эшафот, чтобы эта функция прошла испытания. Если вы хотите добавить другое поле в модель, сначала обновите функцию, дайте ей отказать, затем напишите миграцию и обновите представление, чтобы тесты прошли успешно.

Другие вопросы по тегам