【问题标题】:Inject Services in Grails Unit Test在 Grails 单元测试中注入服务
【发布时间】:2012-08-31 10:31:36
【问题描述】:

我知道您可以使用以下方法在单元测试方法中简单地注入服务:

defineBeans {
   someService(SomeService)
}

但是当我需要在服务中注入服务时(服务someService 将自己称为另一个服务some2Service)。当我使用上面的代码运行测试时,我收到:

Message: Cannot invoke method someMethod() on null object

是否可以在单元测试中将服务注入到服务中?

谢谢。 ;-)

【问题讨论】:

    标签: unit-testing grails dependency-injection


    【解决方案1】:

    要在单元测试中使用 Spring bean,您需要执行以下操作:

    • defineBeans 闭包中包含测试所依赖的所有服务和其他 bean。
    • 对于需要注入其他 bean 的 bean,将 autowire 属性设置为 true

    例如:

    defineBeans {
        someService(SomeService) { bean ->
            bean.autowire = true
        }
        some2Service(Some2Service)
    }
    

    【讨论】:

    • Grails 2.24 支持吗?
    【解决方案2】:

    您可以使用 ref 设置您的服务成员变量

    MyService(MyProvider) {
            userDetailsService = ref("userDetailsService")
            springSecurityService = ref("springSecurityService")
            userService = ref("userService")
        }
    

    希望有帮助

    【讨论】:

    • Grails 2.2.4 版本是否支持?
    • 是的……我用的是 1.3.6 版
    猜你喜欢
    • 2016-09-05
    • 1970-01-01
    • 2020-11-20
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多