Структура функций успешного и неудачного входа в систему

Я только начинаю работать с Cucumber и использую Geb внутри приложения Grails 2.1.1. У меня есть первый рабочий тест, который проверяет успешный вход в систему.

Feature: login to system
  As a user of the system
  I want to log in to the application
  so that I can use it

  Scenario: login
    Given I access the login page
    When I enter "user_10001" and "10001"
    Then I see the dashboard

Given(~'^I access the login page$') {->
  to LoginPage
  at LoginPage
}

When(~'^I enter "([^"]*)" and "([^"]*)"$') { String username, String password ->
  page.add(username, password)
}

Then(~'^I see the dashboard$') {->
  at DashboardPage
}

Then(~'^I see an error message on the login page$') { ->
  at LoginPage
}

Это прекрасно работает. Я также хочу проверить, что происходит при сбое входа в систему. Я понимаю, что это другой сценарий, но разве это еще одна особенность? Или это дополнительный сценарий той же функции? Любое руководство будет оценено.


person Gregg    schedule 30.12.2012    source источник


Ответы (1)


Функция - это часть функциональности. Единственная причина разделить сценарии на более чем одну функцию - уменьшить длину файла и сделать информацию о функциях более доступной для поиска.

Ваш сценарий является частью функции аутентификации. Но если у вас есть много функций, связанных с аутентификацией (несколько страниц входа, забытый пароль, подтверждение по SMS / телефону), функции аутентификации можно разделить на несколько файлов функций, помещенных в папку аутентификации. Это зависит от вашего приложения

Думаю, в любом случае сценарии успешного и неудачного входа в систему лучше уместятся в одном файле.


К тому же ваш сценарий кажется мне немного хрупким и императивным. Прочтите следующее:

Я бы написал это так:

Scenario: Login
  Given I'm at login page
  When I login with valid credentials
  Then I see the dashboard
person Andrei Botalov    schedule 30.12.2012
comment
Спасибо. Мне еще многому нужно научиться. Что меня немного сбивает с толку, так это то, что оба сценария, которые я начинаю, одинаковы. И я не могу сказать, связаны ли мои ошибки с тем, что я не могу этого сделать, или с тем, что у меня что-то еще не так. Но это другой вопрос ... - person Gregg; 31.12.2012