2011-01-24 2 views
2

Я только начинаю с BDD в веб-проекте, используя SpecFlow и WatiN для автоматизации работы через браузер, и я не совсем уверен, как писать свои шаги.Confused about my Gherkin - навигация между веб-страницами

Я пытаюсь выгнать все из тестов и в режиме TDD ничего не писать, если это не требуется для прохождения теста. (Я также делаю модульные тесты, чтобы управлять деталями, но этот вопрос не об этом). Одна вещь, которую я смущает, - это перемещение между страницами, и если/как это должно быть определено в спецификациях.

Первый тест включает в себя ввод некоторых деталей и обеспечение их отображения в списке. Моя первая попытка выходит что-то вроде этого:

Сценарий: Добавить Подробнее Вариант 1

Учитывая я на странице «Главная»
Когда я нажимаю «Добавить Подробнее»
И я вхожу «John Smith "в поле Имя
И нажмите кнопку„Сохранить“
Затем„“появится в списке John Smith

Однако, это включает в себя навигацию между несколько страниц, поэтому я не знаю, должно ли это быть явным - иначе я просто должен предположить, что я нахожусь на правильной странице или шаги, которые, по-видимому, не связаны с той страницей, на которой я нахожусь (например, «Когда я нажимаю« Добавить детали »), есть утверждения, чтобы проверить, на какой странице я включен.

Мы проверяем страницы с явным шагом в сценарии?

Сценарий: Добавить Подробнее Вариант 2

Учитывая я на странице "Главная"
Когда я нажимаю "Добавить Подробнее"
И я на "Add Детали" страницы
И я вхожу «Джон Смит» в поле Имя
И нажмите кнопку «Сохранить»
И я на «Home» странице
Затем в списке появляется «Джон Смит»

Или мы делаем это по шагам из варианта 1, просто не упоминая его явно?

Например, если вы нажмете «Добавить детали», убедитесь, что мы закончили работу на правильной странице?

public void WhenIClickAddDetils{ 
    // syntax probably wrong, not important 
    Assert.That(IE.Button("AddDetails").exists); 
    IE.Button("AddDetails").click(); 

    Assert.That(IE.PageTitle = "Add Details")); // do we check this here? 
} 

Или мы должны проверить, что мы находимся на правильной странице, прежде чем вводить детали?

public void WhenIEnterDetils{ 
    Assert.That(IE.PageTitle = "Add Details")); // do we check this here? 

    IE.TextField("Name").value = "John Smith"; 
    // etc 
} 

С другой стороны, мы могли бы начать с

Учитывая я на странице «Добавить Подробнее»

И просто сделать этот шаг включать, начиная с домашней страницы и нажав кнопку " Добавить кнопку ", чтобы перейти на эту страницу.Хотя это по-прежнему оставляет ту же проблему, когда вы переходите на главную страницу после нажатия кнопки «Сохранить».

Любые мысли?

ответ

3

Я бы сказал, что вам не нужно проверять его в этом сценарии. В основном, тест Given-When-Then (arr-act-assert), и And I am on the "Add Details" page на самом деле Then (утверждают) внутри When (act), который выглядит не так.

Мое шестое чувство, что она должна выглядеть вместо этого:

Scenario: Add Details directs to "Add Details" page 

Given I am on the "Home" page 
When I click "Add Details" 
Then I am on "Add Details" page 


Scenario: "Add Details" adds person to the list 

Given I am on the "Add Details" page 
And I enter "John Smith" in the Name field 
And I click "Save" 
Then I am on the "Home" page 
And "John Smith" appears in the list 
+1

Да, я думаю об этом, я просто подумал, что первый сценарий был слишком мелкозернистый. Я не был уверен в добавлении сценариев только для навигации между страницами. Но он лучше читает мои примеры, поэтому, возможно, вы правы. –