是否可以在页面上的'at'闭包中指定一些可选参数,如下所示:
class ManagerDashboardClientsPage extends Page {
static at = { year, geo ->
if (year) {
GebUtil.selectedYear == year
}
title.endsWith('Dashboard: Clients')
}
}
这样我就可以写两个
at ManagerDashboardClientsPage
和
at ManagerDashboardClientsPage(2013, 'North East')
目前第一个打破了
No signature of method: page.ManagerDashboardClientsPage$__clinit__closure1.doCall() is applicable for argument types: () values: []
Possible solutions: doCall(java.lang.Object, java.lang.Object), call(), call([Ljava.lang.Object;), call(java.lang.Object), call(java.lang.Object, java.lang.Object), equals(java.lang.Object)
groovy.lang.MissingMethodException: No signature of method: page.ManagerDashboardClientsPage$__clinit__closure1.doCall() is applicable for argument types: () values: []
Possible solutions: doCall(java.lang.Object, java.lang.Object), call(), call([Ljava.lang.Object;), call(java.lang.Object), call(java.lang.Object, java.lang.Object), equals(java.lang.Object)
at geb.Page.verifyThisPageAtOnly(Page.groovy:165)
at geb.Page.verifyAt(Page.groovy:133)
at geb.Browser.doAt(Browser.groovy:358)
at geb.Browser.at(Browser.groovy:289)
at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51)
at spec.ManagerDashboardClientsSpec.login as CEO(ManagerDashboardClientsSpec.groovy:16)
答案 0 :(得分:4)
在Groovy中,您可以为可选的闭包参数设置默认值,如下所示:
static at = { year=null, geo=null ->
...
}
我认为你会明白的。 :)
更新
好的,我知道你不再需要它了,但是当我学习Groovy时我把这个用于自己的用途,我觉得有人会觉得它很有用:
{ -> ... }
一个完全没有参数的闭包。如果用params调用它,Groovy会爆炸。 { ... }
一个带有一个可选参数的闭包,名为“it” { foo -> ... }
一个名为“foo”的参数的闭包(foo可以是任何类型) { foo, bar, baz -> ... }
一个名为“foo”,“bar”和“baz” { String foo -> ... }
如果您愿意,可以指定参数的类型