Выполнять действие каждый шаг «когда» Спок - PullRequest
0 голосов
/ 16 мая 2018

Я хочу выполнять действие takeScreen () каждый шаг «когда» (Спок).Как я могу сделать это, не вызывая эту функцию каждый шаг «когда».

 def "doSomeAction"() {
    when:
    doSmth()
    takeScreen()
    then:
    at SomePage
    when:
    doAction()
    takeScreen()
    then:
    at SomePage
}

def takeScreen(){
    //code there
}

1 Ответ

0 голосов
/ 17 мая 2018

Вы не можете.Что в этом такого?

Кстати, если вы используете Geb + Spock для тестирования какого-либо веб-приложения и на всякий случай takeScreen() предназначен для создания скриншотов, почему бы вам просто не получить свой тест Gebот GebReportingSpec и использовать report "After login" или около того?

Обновление: Обходной путь - добавить небольшой вспомогательный метод в ваш класс или просто в глобальную конфигурацию Spock и вызвать его после when: или then:.Смотрите мой ответ здесь для получения подробной информации о том, как это сделать.Вместо (или в дополнение к) печати этикеток вы можете делать все, что takeScreen() должен делать, или просто вызывать его оттуда.Если вы хотите его в начале when:, убедитесь, что метод вызывается как when:_ "bla", если вы хотите, чтобы он был в конце, как в вашем примере, вы бы назвали его в последующем then: как then:_ "bla".Но я не думаю, что вы должны делать это таким образом, в вашем случае это просто сокрытие информации.Тест должен показать, что именно он делает.В моих проектах разработчики сами часто сталкивались с проблемами во вспомогательных методах, особенно в Geb, когда они делали скриншоты для неудачных тестов по причинам не по теме и слишком сложным, чтобы их здесь объяснять.

...