Я пытался понять свои собственные проблемы, когда наткнулся на этот вопрос а>. Насколько я понимаю, две разные функциональности выражаются и тестируются (посмотрите на два «Когда» и два «Гивена» о них). Правильно ли это сделать?
Несколько аспектов поведения в одном сценарии?
Ответы (1)
Есть два способа написания сценариев (и, если уж на то пошло, примеров на уровне класса).
Один из них — использовать один пример для каждого сценария.
Другой вариант — иметь один аспект поведения для каждого сценария.
В этом сценарии поведение как неактивных, так и активных пользователей дает что-то ценное. Без того или другого поведение бессмысленно. Так что ставить их в один сценарий имеет смысл. Это также обеспечивает прагматическую выгоду, поскольку часто требуется время для инициализации контекста для сценария.
Хорошая причина разделить их может быть, если в игру вступает третье поведение (например, вы заблокировали пользователей, а также активных и неактивных).
Если у вас есть отдельные аспекты поведения, обычно полезно проиллюстрировать их разными примерами. Например:
Given Fred bought a fridge for $100
When Fred returns the fridge
Then he should be refunded $100
And the fridge should be returned to stock.
Очевидно, что эти два результата — это два разных аспекта поведения, в которых задействованы разные заинтересованные стороны — покупатель и владелец магазина, — поэтому было бы разумнее разделить их.
Given Fred bought a fridge for $100
When Fred returns the fridge
Then he should be refunded $100
Given Fred bought a fridge for $100
When Fred returns the fridge
Then the fridge should be returned to stock.
Однако относитесь к этому прагматично. Если это более читабельно или понятно в одном направлении, чем в другом, то это должно иметь приоритет над любыми жесткими правилами. Я скажу, что мне потребовалось некоторое время, чтобы научиться делать это эффективно, так что в основном это приходит с опытом.