我正在尝试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来调试这一点,有任何线索吗?
发布于 2014-06-20 01:50:46
由于内容块使用DSL并在编译时进行转换,我认为没有IDE的特殊支持就不可能进行调试,但是我希望有人能证明我错了。
我一直使用的方法是为超出核心内容的任何内容定义方法。这提供了一些好处,包括调试支持、编写测试时的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
}
}
https://stackoverflow.com/questions/24283149
复制相似问题