Я думаю, что вам действительно не хватает здесь. You ВСЕГДА необходимо When
. Это то, что вы должны тестировать! Что вы можете оставить без внимания Givens
Что вы должны сказать, это;
When I visit the homepage
Then I should see "Welcome To The Site"
Given When Then
действительно лучше способ представления государственной машины.
Given some initial state (in your case, non)
When I perform some action (in your case, visiting the homepage)
Then I have some final state (in your case, text displayed to a user)
То, что я хочу сделать, это думать обо всех вещах, которые должны присутствовать, чтобы позволить When
случиться. В вашем случае, похоже, нет никакого начального состояния. Но подумайте, есть ли у вас веб-приложение. Перед посещением главной страницы вам нужно будет иметь начальное состояние (вам нужно будет убедиться, что пользователь вошел в систему);
Given a user (user must be stored in the database)
And the user is logged in (a logged in user must be in the session)
When the user visits their homepage
Then the user should see "Welcome To Your Homepage"
Альтернативный сценарий будет;
Given no logged in user (some people would leave this Given out, but I add it for completness)
When a user visits their homepage
Then the user should be redirect to the login page
Как кто-то правильно отметил, что большинство инструментов BDD фактически не различать Given When Then
, но вы должны! Вербальная природа «Дано когда» была выбрана для того, чтобы нам легче понять и помочь нашим мысленным процессам. Машине все равно, что вы называете шагами. В этом случае вы должны приложить все усилия, чтобы правильно использовать ключевые слова в любое время.
На самом деле Specflow, по-видимому, даже не заботится о том, назовите ли вы данный шаг. Дано, когда или тогда, пока он привязывается к правым атрибутам Given/when/then. Выбор слова - это вкус, и, похоже, он просто выполняет шаги в порядке. – perfectionist
Это как говорит перфекционист; specflow просто выполняет шаги в порядке, указанном в файле функций. Ему было все равно, о каком атрибуте вы используете. –
Doh - нет новых строк в комментариях! Я бы рекомендовал использовать шаги «Когда-то», чтобы четко обозначить действие, которое вы тестируете. Как и в Arrange Act Assert. –