0

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

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

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

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

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

谢谢你的时间

4

2 回答 2

5

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

执行以下操作:

class MyTests {
    def userService

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

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

于 2013-01-19T21:26:28.220 回答
0

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

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

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

于 2013-01-19T20:22:38.250 回答