【发布时间】:2014-04-12 13:40:29
【问题描述】:
我正在使用 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 release 将增加与我的旧示例的兼容性。”
我已将 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)
我是不是误解了作者的意思,因此遗漏了什么?
【问题讨论】: