没有这样的属性:appCtx for class:groovy.lang.Binding - Cucumber,Grails

时间:2014-04-12 13:40:29

标签: grails cucumber


我正在使用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)

我是否误解了作者的意思,因此错过了什么?

1 个答案:

答案 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。

希望有所帮助:)