У меня есть несколько файлов объектов, которые должны утверждать предварительно заполненные данные на веб-странице - каждый файл объектов имеет свой собственный файл определения шага
, например, в файле определения шага функции клиента:
[Then(@"I expect all fields on the screen populated with Customer Details from the Database")]
public void PopulatedWithCustomerDetailsFromTheDatabase ()
{
foreach (var entry in dataDictionary)
{
Assert.That(pages.CustomerPage.GetText(entry.Key), Is.EqualTo(entry.Value));
}
}
в файле определения шага компании:
[Then(@"I expect all fields on the screen populated with Company Details from the Database")]
public void PopulatedWithCompanyDetailsFromTheDatabase()
{
foreach (var entry in dataDictionary)
{
Assert.That(pages.CompanyDetailsPage.GetText(entry.Key), Is.EqualTo(entry.Value));
}
}
Оба используют соответствующий класс объекта страницы для получения текста со страницы и подтверждения его правильности. Было рекомендовано, чтобы я не разделял определения шагов, как это, поскольку они используют разные объекты страницы, с которыми я согласен. Проблема в том, что мне нужно будет сделать это на следующих 50+ страницах: CustomerPage, CompanyDetailsPage, StockPage, DeliveryPage и т. Д. c ...
Любые советы о том, как мне это структурировать, чтобы у меня было больше общего в Step Defs? - должен быть лучший способ, я просто дублирую код, но изо всех сил пытаюсь визуализировать решение с архитектурной точки зрения.
Действия, общие для многих страниц, должны быть инкапсулированы, поскольку собственные модели страниц и модели страниц могут быть составлены многостраничных моделей - как этого можно достичь?
Чтобы пояснить, что каждая страница отличается, поэтому в дополнение к описанным выше шагам для функции «Адресная страница» у меня есть шаг def:
[Then(@"I expect all fields on the screen populated with AddressDetails from the Database")]
public void PopulatedWithAddressDetailsFromTheDatabase()
{
foreach (var entry in dataDictionary)
{
Assert.That(pages.AddressDetailsPage.GetText(entry.Key), Is.EqualTo(entry.Value));
}
}
с полями, такими как адресная строка1, адресная строка 2 и т. д. c ....
и функция «Страница запаса» с шагом по умолчанию:
[Then(@"I expect all fields on the screen populated with Stock from the Database")]
public void PopulatedWithStockFromTheDatabase()
{
foreach (var entry in dataDictionary)
{
Assert.That(pages.StockPage.GetText(entry.Key), Is.EqualTo(entry.Value));
}
}
с полями списка запасов и т. д. c ... для 50 разных страниц