groovy - GEB:禁用 waitFor block 中的隐式断言

标签 groovy automated-tests geb

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

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

根据The Book of GEB :

Any calls to refreshWaitFor() method have implicit assertions added to each expression in the bloc passed to it just like for waitFor() method calls.

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

我需要验证最后一行的真实性,所以现在我正在编写 processDialog.waitIfShown() || true 跳过此表达式验证。这可行,但看起来很奇怪。

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

最佳答案

如果您想禁用特定 waitFor() 调用的隐式断言,那么不行,目前不支持开箱即用。不过,有很多解决方法:

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

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

关于groovy - GEB:禁用 waitFor block 中的隐式断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56059286/

相关文章:

groovy - Groovy歧义方法重载

gradle - Gradle 任务示例上的 Groovy 语法

scala - 在 Jenkins 中显示 SCCT 覆盖范围

java - waitForAngularRequestsToFinish()——有什么用?

grails - 使用Geb维护测试之间的 session

groovy - Gradle 自动打印数字

java - Append CompiledScript 或添加两个 CompiledScript

javascript - testcafe - 如何断言文本包含在 html 正文中

geb - 获取 Geb 中的输入类型

java - 使用Geb提取Stackoverflow问题计数器