GEB: отключить неявные утверждения в блоке waitFor - PullRequest
0 голосов
/ 09 мая 2019

У меня есть блок waitFor{} с несколькими строками внутри:

waitFor(timeOutSeconds) {
    jobRow.clickUpdate()
    processDialog.waitIfShown()
    jobRow.statusCell.text() == status.value
}

Согласно Книге ГЭБ :

Любые вызовы метода refreshWaitFor () имеют неявные утверждения, добавленные в каждое выражение в блоке передается ему так же, как для waitFor () вызовы метода.

Проблема в том, что processDialog.waitIfShown() может возвращать false, и это действительно нормально, если индикатор выполнения не отображался.

Мне нужна последняя строка, которая будет проверена на отличную правду, поэтому сейчас я пишу processDialog.waitIfShown() || true, чтобы пропустить проверку этого выражения. Это работает, но выглядит странно.

Есть ли флаг или опция для отключения неявных утверждений в ожидающих блоках?

1 Ответ

2 голосов
/ 09 мая 2019

Если вы хотите отключить неявные утверждения для определенного вызова waitFor(), то нет, это в настоящее время не поддерживается "из коробки".Однако существует ряд обходных путей:

  • неявные утверждения могут быть отключены глобально, если вы удалите org.gebish:geb-implicit-assertions артефакт из пути к классам компиляции - это транзитивная зависимость geb-core и исключение транзитивных зависимостей относительноeasy во всех основных системах сборки
  • неявные утверждения не применяются к вызовам методов void - если вы включите processDialog.waitIfShown() в метод, имеющий void в качестве возвращаемого типа, то вызовы этого метода не будут утверждены
  • неявные утверждения применяются только к waitFor() вызовам, если им передаются литералы замыкания - если вы присваиваете свое условие замыкания переменной, а затем передаете эту переменную в вызов waitFor(), то никакие операторы в этом замыкании не будутбыть неявно заявленным

Если вы считаете, что вышеуказанные опции / обходные пути недостаточны, пожалуйста, не стесняйтесь поднимать проблему в трекере .

...