【发布时间】:2015-06-09 18:26:54
【问题描述】:
Geb 使用名为content 的静态字段来定义页面或模块的内容。 content 字段的值是一个闭包。
class GebishOrgHomePage extends Page {
static content = {
manualsMenu {
module MenuModule, $("#header-content ul li", 0)
}
links { $('.link-list li a') }
}
}
Intellij 已经支持此内容 dsl,但它不支持 module 和 moduleList 方法。这会在使用模块时导致有限的自动完成支持。
为了解决这个问题,我想编写一个 GroovyDSL 脚本,将缺少的方法定义添加到内容闭包及其嵌套闭包中。但是,我不知道如何将方法添加到未传递给方法的闭包中,因为enclosingCall 需要具体的方法名称。
另一件事是这些方法必须具有这样的通用返回类型:
<T extends Module> T module(Class<T> m) {
// return an instance of T
}
【问题讨论】:
标签: intellij-idea geb groovydsl