我有一个非常简单的Grails服务:
class UserService {
def returnHi() { return "Hi" }
}
我正试图在集成测试中访问该服务,如下所示:
def testService() {
UserService userService
assertEquals( "Hi", userService.returnHi() )
}
为什么我会失败: java.lang.NullPointerException:无法在null对象上调用方法returnHi()?
感谢您的时间
答案 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