我正在尝试GEB,并希望在示例中调试静态代码块。我试图设置断点但我似乎无法检查静态内容块中使用的数据。
class GoogleResultsPage extends Page {
static at = { results }
static content = {
results(wait: true) { $("li.g") }
result { i -> results[i] }
resultLink { i -> result(i).find("a.l")[0] }
firstResultLink { resultLink(0) }
}
}
关于如何使用例如IntelliJ进行调试的任何线索?
答案 0 :(得分:3)
由于内容块使用DSL并在编译时经历转换,我认为如果没有IDE的特别支持就无法进行调试,但我希望有人可以证明我错了。< / p>
我一直在使用的方法是为核心内容之外的任何方法定义方法。这提供了一些好处,包括调试支持,编写测试时的IDE自动完成以及良好的重构支持。当然,缺点是稍微冗长的代码,尽管为了我的目的,这种权衡是值得的。
以下是我如何使用GoogleResultsPage:
class GoogleResultsPage extends Page {
static at = { results }
static content = {
results(wait: true) { $("li.g") }
}
Navigator result(int i) { results[i] }
Navigator resultLink(int i) { result(i).find("a.l")[0] }
Navigator firstResultLink { resultLink(0) }
}
然后在编写测试时我使用稍微更类型的方法:
class MySpec extends GebReportingSpec {
def "google search with keyword should have a first result"() {
given:
GoogleHomePage homePage = to(GoogleHomePage)
when:
homePage.search("keyword")
then:
GoogleResultsPage resultsPage = at(GoogleResultsPage)
resultsPage.result(0).displayed
}
}