【问题标题】:Grails service injection into integration testGrails 服务注入集成测试
【发布时间】:2013-01-03 06:42:36
【问题描述】:

我有一个非常简单的 Grails 服务:

class UserService {
    def returnHi() { return "Hi" }    
}

我正在尝试在集成测试中访问该服务,如下所示:

def testService() {
  UserService userService
  assertEquals( "Hi", userService.returnHi() )
}

为什么会失败: java.lang.NullPointerException:无法在空对象上调用方法 returnHi()?

感谢您的宝贵时间

【问题讨论】:

    标签: grails service


    【解决方案1】:

    将'def userService' 作为类字段而不是放在方法内部就足够了。在集成测试中,bean 的注入与控制器、服务和其他 bean 中的相同。

    执行以下操作:

    class MyTests {
        def userService
    
        void serviceTest(){
            assert userService.returnHi(), 'Hi'
        }        
    }
    

    附注确保服务名称正确且以驼峰形式书写。

    【讨论】:

      【解决方案2】:

      将以下行添加到集成测试文件中:

      import org.codehaus.groovy.grails.commons.ApplicationHolder as AH
      def userService = AH.application.mainContext.userService
      

      如此处所述:Service is not getting injected into Grails domain class , Grails 2.0.0 and 2.0.3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-08
        • 2016-12-03
        • 1970-01-01
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        相关资源
        最近更新 更多