Grails服务注入集成测试

时间:2013-01-19 19:08:53

标签: grails service

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

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

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

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

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

感谢您的时间

2 个答案:

答案 0 :(得分:5)

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

做类似的事情:

class MyTests {
    def userService

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

P.S。确保服务名称正确并用camelCase编写。

答案 1 :(得分:0)

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

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