我有一个 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/