C # функция, которая может возвращать любой из двух разных объектов страницы - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть функция, которая возвращает WelcomeScreen объект страницы следующим образом:

public WelcomeScreen UpdateAndSubmitProfile()
{
    LastNameField.Clear();
    LastNameField.SendKeys("Malik");
    Reporter.LogPassingTestStepToBugLogger("Update Last Name profile field, Last Name => Malik");
    ProfileSubmitButton.Click();
    Reporter.LogPassingTestStepToBugLogger("Click Submit button.");
    return new WelcomeScreen(Driver);
}

Теперь я хочу получить доступ к этому же методу, но хотел бы, чтобы он возвращал другой объект страницы LessonPage (return new LessonPage(Driver)).Есть ли способ сделать это, используя тот же метод?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы можете создать приватный метод с логикой и деформировать его двумя методами, каждый из которых возвращает объект страницы

private void UpdateAndSubmitProfile()
{
    LastNameField.Clear();
    LastNameField.SendKeys("Malik");
    Reporter.LogPassingTestStepToBugLogger("Update Last Name profile field, Last Name => Malik");
    ProfileSubmitButton.Click();
    Reporter.LogPassingTestStepToBugLogger("Click Submit button.");
}

public WelcomeScreen UpdateAndSubmitProfileAndGoToWelcomeScreen()
{
    UpdateAndSubmitProfile();
    return new WelcomeScreen(Driver);
}

public LessonPage UpdateAndSubmitProfileAndGoToLessonPage()
{
    UpdateAndSubmitProfile();
    return new LessonPage(Driver);
}
0 голосов
/ 14 ноября 2018

Хорошо, если оба класса реализуют один интерфейс, вы можете изменить тип возврата метода на интерфейс.

public Screen UpdateAndSubmitProfile()
{
    LastNameField.Clear();
    LastNameField.SendKeys("Malik");
    Reporter.LogPassingTestStepToBugLogger("Update Last Name profile field, Last Name => Malik");
    ProfileSubmitButton.Click();
    Reporter.LogPassingTestStepToBugLogger("Click Submit button.");
    if(...)
        return new WelcomeScreen(Driver);
    else
        return new LessonPage(Driver);
}
...