Я только начинаю с BDD в веб-проекте, использую SpecFlow и WatiN для автоматизации вещей через браузер, и я не совсем уверен, как написать свои шаги.
Я пытаюсьчтобы вывести все из тестов, и в стиле TDD, ничего не писать, если только это не необходимо для прохождения теста.(Я также делаю юнит-тесты, чтобы проработать детали, но этот вопрос не об этом).Одна вещь, которая меня смущает, это навигация между страницами, и если / как это должно быть определено в спецификациях.
Первый тест включает в себя ввод некоторых деталей и обеспечение их отображения в списке.Моя первая попытка выглядит примерно так:
Сценарий: Добавить подробности Опция 1
Учитывая, что я нахожусь на «Домашней странице»
Когда я нажимаю «Добавить детали»
И я вписываю «Джон Смит» в поле «Имя»
И я нажимаю «Сохранить»
Затем в списке появляется «Джон Смит»
Однако, это предполагает переход между паройстраниц, поэтому я не знаю, должно ли это быть явным - в противном случае, я просто должен предположить, что я на правильной странице, или шаги, которые явно не связаны с той страницей, на которой я нахожусь (например, «КогдаЯ нажимаю «Добавить детали». У меня есть утверждения, чтобы проверить, на какой странице я нахожусь.
Проверяем ли мы страницы с явными шагами в сценарии?
Сценарий: Добавить подробности, вариант 2
Учитывая, что я нахожусь на странице «Домой»
Когда я нажимаю «Добавить детали»
И я на странице «Добавить детали»
И я вхожу«Джон Смит» в поле «Имя»
И я нажимаю «Сохранить»
И я на странице «Домой»
Затем «Джо»hn Smith "появляется в списке
Или мы делаем это в шагах из варианта 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
}
В качестве альтернативы, мы могли бы начать с
Учитывая, что я нахожусь на странице "Добавить детали"
И просто включите этот шаг, начиная с домашней страницы и нажав кнопку "Добавить детали", чтобы получитьна эту страницу.Несмотря на то, что после нажатия кнопки «Сохранить» все равно остается проблема возврата к домашней странице.
Есть мысли?