GEB:禁用waitFor块中的隐式断言

时间:2019-05-09 12:18:37

标签: groovy automated-tests geb

我有一个waitFor{}块,里面有几行:

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

根据The Book of GEB

  

任何对refreshWaitFor()方法的调用都将隐式断言添加到   传递给它的bloc中的每个表达式就像waitFor()   方法调用。

问题是processDialog.waitIfShown()可以返回false,如果没有显示进度条,这实际上是可以的。

我只需要对最后一行进行验证即可,因此现在我写processDialog.waitIfShown() || true来跳过此表达式验证。这可行,但看起来很奇怪。

是否有任何标志或选项可以关闭等待块中的隐式断言?

1 个答案:

答案 0 :(得分:2)

如果您想为特定的waitFor()调用禁用隐式断言,则否,当前不支持。但是,有多种解决方法:

  • 如果从编译类路径中删除org.gebish:geb-implicit-assertions工件,则可以全局禁用隐式断言-这是geb-core的传递依赖项,并且在所有主要构建系统中排除传递依赖项都是相对容易的
  • 隐式断言不适用于对void方法的调用-如果将processDialog.waitIfShown()包装到以void作为返回类型的方法中,则不会断言对该方法的调用
  • 隐式断言仅在传递了闭合常量的情况下才应用于waitFor()调用-如果将条件闭合分配给变量,然后将该变量传递给waitFor()调用,则该语句中没有语句关闭将被隐式断言

如果您认为上述选项/解决方法不够充分,请随时在the tracker中提出问题。