Несколько аспектов поведения в одном сценарии?

Я пытался понять свои собственные проблемы, когда наткнулся на этот вопрос . Насколько я понимаю, две разные функциональности выражаются и тестируются (посмотрите на два «Когда» и два «Гивена» о них). Правильно ли это сделать?


person Ashkan Kh. Nazary    schedule 09.10.2011    source источник


Ответы (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.

Однако относитесь к этому прагматично. Если это более читабельно или понятно в одном направлении, чем в другом, то это должно иметь приоритет над любыми жесткими правилами. Я скажу, что мне потребовалось некоторое время, чтобы научиться делать это эффективно, так что в основном это приходит с опытом.

person Lunivore    schedule 11.10.2011