Есть ли решение объединить два перечислимых класса, шаблон строителя? - PullRequest
0 голосов
/ 07 ноября 2019

Мне нужно протестировать веб-страницу, поэтому мы создаем страницы с помощью класса enum. В первом классе enum у нас есть Pages, а во втором enum мы сохранили тип страниц, таких как "uk", "canada", потому что разным типам страниц нужно создавать разные страницы

Я пытаюсь найти решение из этихtopic Могу ли я использовать шаблон построителя на Java Enum

public class HomePage extends BasePage {

    public String url = "/ccrz__HomePage";
    public Storefront storefront;

    @FindBy(how = How.XPATH, using = "//div[contains(@class, 'cc_tmpl_HomePage')]")
    private WebElement mainContainer;

    public HomePage(Storefront storefront) {

        super(storefront);
        super.setUrl(this.url);
    }

    @Override
    public boolean validatePage() {

        return isDisplayed(mainContainer);
    }



public enum Pages {

    HOMEPAGE(new HomePage()),
    ORDER_HISTORY_PAGE(new MyAccountOrderHistoryPage()),
    MY_ACCOUNT_PAGE(new MyAccountPage()),


    private final BasePage page;
    private final Storefront storefront;

    Pages(BasePage page, Storefront storefront) {

        this.page = page;
        this.storefront = storefront;
    }
    public BasePage get() {
        return this.page;
    }

Задница, в которой вы видите ошибку, возникающую в классе enum, потому что, например, для 'new HomePage ()' нужен параметр Storefront, а я -понятия не имею, как ее решить ...

1 Ответ

0 голосов
/ 07 ноября 2019

Я бы не стал использовать enums для хранения экземпляров ваших страниц. Почему бы не иметь класс обслуживания, который содержит Map<Page, ? extends BasePage>, и хранить там все свои страницы. Затем вы можете иметь фабричный конструктор или конструктор для вашего сервиса, который создает карту со всеми необходимыми страницами.

...