Я думаю, что вы действительно упускаете из виду здесь. Вам ВСЕГДА нужен 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
, но вы должны! Детальная природа «Дано, когда» была выбрана, так как нам, людям, легче понимать и помогает нашим мыслительным процессам. Машине наплевать, что вы называете ступеньками. В таком случае вы должны приложить все усилия, чтобы всегда правильно использовать ключевые слова.