Мне кажется, это помогает думать о TDD как о том, как написать пример того, как что-то использовать, и почему поведение интересно.
Так, например, в вашем приложении вы можете иметь такое поведение:
Шоу связывается с режиссером при его создании.
Однако это не очень интересно. Почему это ценно? Где это используется? Если вы можете показать какой-то аспект поведения, в котором это важно, это более интересно.
Репутация шоу начинается с репутации режиссера.
Затем вы можете написать пример такого поведения:
Given a director with a reputation of 75%
When he creates a new show
Then the show should start with a reputation of 75%.
Это было бы более интересным поведением. Мы действительно можем создать шоу с такой репутацией, не используя Hibernate. Я иногда помещаю подобные примеры в комментарии. (Я использую это в качестве примера, поскольку я понятия не имею, почему создание шоу с режиссером важно для вас!)
Для чего-то вроде NHibernate, либо используйте сценарии полного стека, охватывающие все приложение, либо интеграционные тесты, которые просто проверяют сопоставления путем создания шоу с его директором, или проверяйте вручную, что приложение работает. Вы можете предположить, что NHibernate продолжит работать, если вы используете его правильно, поэтому вам нужно меньше тестов по сравнению с кодом, который вы собираетесь изменить.
Мой опыт показывает, что можно создавать реальные доменные объекты (Show, Director и т. Д.), А не издеваться над ними. Однако, если у вас есть какие-то сложные расчеты - например, возможно, есть сложности с вычислением репутации Шоу, если оно было в течение нескольких ночей - тогда вы можете ввести макет, чтобы помочь с этим, и ваше поведение изменится соответственно:
A show uses the reputation rules for its reputation
// Given the reputation rules
(mock out the reputation)
// When a show is created with a director
(create the show)
// And it's shown for 3 nights with varying reviews
(associate the reviews with the show)
// Then it should use the rules to calculate its reputation
(verify that when you get the reputation, the show asks the mock for help).
Надеюсь, это даст вам представление о том, где может быть полезно издеваться, и где, скорее всего, вам это не нужно. Это становится более естественным, чем больше вы практикуетесь.