Избегайте переключения оператора в шагах Jbehave - PullRequest
0 голосов
/ 09 апреля 2019

Я работаю над сценарием jbehave.Мой шаг использует оператор switch.Таких вкладок может быть много.Это означает, что каждый раз, когда мне нужно добавить еще одно утверждение.

Как заменить операторы switch на OOP?

Теперь я различаю табуляцию по перечислению, так как из jbehave можно получить только строку.

Но я считаю, что есть более элегантный способ.

Когда я открываю публикацию в редакторе и перехожу на вкладку Аудитория

@When("I open publication in Editor and go to $tab tab")
public void openEditorAndGoToTab(String tab){

    TaggingUiTabs enumTab = EnumTextMatcher.matchEnum(tab, 
    TaggingUiTabs.getAllTabs());

    editorWindow.goToTaggingUi();
    switch (enumTab){
        case AUDIENCE:
            taggingUi.goToAudienceTab();
            break;
    }
}

1 Ответ

1 голос
/ 09 апреля 2019

Я иногда использовал карту, чтобы избежать очень длинных переключений, например, вот так:

private final Map<TaggingUiTabs, Runnable> actionMap;

public MyStepsClass() {
   actionMap.put(TaggingUiTabs.AUDIENCE, () -> taggingUi.goToAudienceTab());
   actionMap.put(TaggingUiTabs.OTHER_TAB, () -> taggingUi.goToOtherTab());
}

@When("I open publication in Editor and go to $tab tab")
public void openEditorAndGoToTab(String tab){

    TaggingUiTabs enumTab = EnumTextMatcher.matchEnum(tab, 
    TaggingUiTabs.getAllTabs());

    editorWindow.goToTaggingUi();
    actionMap.get(enumTab).run();
}

Таким образом, я могу легко добавить больше действий.Я нахожу это очень полезным всякий раз, когда я не могу изменить дизайн остального кода, чтобы он был более объектно-ориентированным.

...