Я знаю, что один из намерений Дэна Норта в разработке BDD заключался в том, чтобы переместить словарь вдалеке от сложности тестового домена. Однако при внедрении внешнего подхода кажется, что нам по-прежнему требуется некоторое понимание насмешливого поведения (или, если хотите, поведение, подвергнутое обструкции). Север предлагает в этом видео, что, если я начну с самых внешних объектов домена и буду работать вовнутрь, я издеваюсь над соавторами, когда я их обнаружу, а затем заменим их правильными реализациями. Поэтому, в конце концов, я заканчиваю набор сквозных тестов.
Маркус Фаулер, похоже, несколько отличался от него в этом сообщении в блоге, когда он определил два лагеря TDD: "классический TDD", где, когда это возможно, используются реальные объекты макет, когда это необходимо, и "mockist TDD", который предпочитает насмешки в большинстве ситуаций. Он видел, как BDD стремится к последнему. I., что в конце разработки функции "макетный" подход оставил бы насмешки в реальных тестах (извините за использование этого слова в обсуждении BDD).Справедливости ради, оба материала лет старые, и, возможно, все стало яснее, поскольку BDD развился вдоль линии между тем, чтобы быть примененным на уровне единицы и уровнем принятия.
Но мой вопрос для сообщества в основном: когда моя история завершена, сколько из сквозного теста должны быть мои сценарии на самом деле? Север объясняет, что BDD требует абстракций. Например, когда я тестирую поведение входа в систему, мои сценарии подробно расскажут о том, что означает процесс входа в систему. Однако, когда я делаю другой сценарий, который требует, но не касается входа в систему, я не хочу повторять эти действия снова и снова. Я хочу, чтобы простая абстракция просто говорила "Учитывая, что я вошел в систему", поэтому я могу выполнить свое другое поведение.
Итак, кажется, что мой подход к абстракции будет заключаться в том, что я издеваюсь над некоторыми сотрудниками (или предоставляю "двойной тест" ), и некоторые сценарии могут использовать их больше, чем другие. Например, я всегда издеваюсь над внешними ресурсами, такими как БД или почтовый сервер?
Возможно, я задаю неправильный вопрос. BDD - это общение, сокращение цикла обратной связи и обнаружение того, что вы не знаете. Возможно, что-то-то-то-не-макет является нерелевантным вопросом, пока поведение, в котором мы заинтересованы, действительно работает. Мне любопытно, что здесь подходы других.