Как/что имитировать в BDD

Я знаю, что одним из намерений Дэна Норта при разработке BDD было отодвинуть словарь от сложности тестовой области. Тем не менее, при реализации внешнего -in-подхода, похоже, нам по-прежнему требуется некоторое понимание фиктивного поведения (или заглушенного поведения, если вы предпочитаете ). Норт предлагает в этом видео , что, если я начну с самых внешних объектов предметной области и буду продвигаться внутрь, я высмеиваю соавторов по мере их обнаружения и позже заменяю их соответствующими реализациями. Так что, в конце концов, я получаю набор от конца -до -конца теста.

Мартин Фаулер, кажется, видел это немного по-другому в этом сообщении в блоге , когда он определил два лагеря TDD :«классический TDD», который использует реальные объекты, где это возможно, и имитации, когда это необходимо, и « mockist TDD», который в большинстве ситуаций предпочитает моки. Он видел, что BDD склоняется к последнему. То есть, что в конце разработки фичи «мокалистский» подход оставит макеты в реальных тестах (извините за использование этого слова в обсуждении BDD ).

Справедливости ради следует отметить, что обоим материалам уже много лет, и, возможно, все стало яснее по мере того, как BDD развивался по линии между применением на уровне единиц и на уровне приемки.

Но мой вопрос к сообществу в основном :когда моя история будет завершена, в какой мере от конца -до -финального теста должны состоять мои сценарии? Норт объясняет , что BDD требует абстракций. Например, когда я тестирую поведение при входе в систему, мои сценарии подробно описывают, что означает процесс входа. Однако, когда я выполняю какой-либо другой сценарий, который требует, но не связан с входом в систему, я не хочу выполнять эти шаги снова и снова.Я хочу простую абстракцию, которая просто говорит: «Учитывая, что я вошел в систему», чтобы я мог выполнить свое другое поведение.

Похоже, что мой подход к абстракции будет заключаться в том, что я издеваюсь над некоторыми соавторами (или предоставляю «тестовых двойников» ), и в некоторых сценариях они могут использоваться чаще, чем в других. Например, всегда ли я имитирую внешние ресурсы, такие как БД или почтовый сервер?

Возможно, я задаю неправильный вопрос. BDD — это общение, сокращение цикла обратной связи и обнаружение того, чего вы не знаете. Может быть, что -и -, что -, а не -по -имитировать, не имеет отношения к делу, пока поведение, которое нас интересует, действительно работает. Мне любопытно, какие здесь подходы у других.

22
задан Ryan Nelson 1 May 2012 в 18:12
поделиться