我正在使用Grails 2.3.3和Cucumber 0.10.0,我正在尝试创建由该插件的作者创建的此示例的更新版本:https://github.com/hauner/grails-cucumber/wiki/Testing-Grails-with-Cucumber-and-Geb
我遇到的问题是,使用新的Grails,appCtx不再受限制,黄瓜需要它。作者在他的github中对它进行了评论:
“appCtx的问题是,它不再是grails 2.3的绑定。您可以使用Holders.applicationContext或使用Holders.applicationContext设置appCtx来解决它。这就是插件2.3发布的内容要添加与旧版示例的兼容性。“
我已将CucumberTestType.groovy更改为他在最新分支版本上的那个。
private Binding createBinding () {
Map variables = buildBinding.variables.clone () as Map
variables.remove ("metaClass")
variables.remove ("getMetaClass")
variables.remove ("setMetaClass")
setAppCtx (variables)
setFunctionalTestBaseUrl (variables)
new Binding (variables)
}
private void setAppCtx (Map variables) {
// appCtx is no longer available in the (test-app) binding since grails 2.3
// for plugin backward compatibility we add it if possible, i.e. not forked!
if (!forked && !variables.containsKey('appCtx')) {
variables.put('appCtx', getApplicationContext())
}
}
但即使在此之后,我仍然会得到同样的错误:
Error executing script TestApp: cucumber.runtime.CucumberException: groovy.lang.MissingPropertyException: No such property: appCtx for class: groovy.lang.Binding (Use --stacktrace to see the full trace)
我是否误解了作者的意思,因此错过了什么?
答案 0 :(得分:0)
我发布了包含grails 2.3支持的插件的0.11.0-SNAPSHOT版本。
我还将示例项目(https://github.com/hauner/grails-cucumber/tree/master/test/projects)更新为0.11.0-SNAPSHOT和grails 2.3.7。
geb示例现在使用最新版本的geb和webdriver。 ListPage
中的代码更改也很少。 url
应为book/index
而不是book/list
。
要使用fork模式,您至少需要grails 2.3.8。
希望有所帮助:)