我正在使用一个小的grails应用程序并开始使用spock作为测试框架。
此时的测试非常简单:
@TestFor(TokenService)
class TokenServiceSpec extends Specification {
TokenService tokenService = new TokenService()
def setup() {
}
def cleanup() {
}
def "test generateToken"() {
expect:
tokenService.generateToken(5).length() == 5
}
}
generateToken 是 TokenService 中的现有公共方法。
当我执行测试时,我得到了:
Failure: test generateToken(com.iibs.security.TokenServiceSpec)
| java.lang.NullPointerException
at com.iibs.security.TokenServiceSpec.test generateToken(TokenServiceSpec.groovy:22)
当我调试它时,我可以验证 tokenService 是否已正确实例化。 这可能是造成这种失败的原因吗?
感谢您的任何建议。
答案 0 :(得分:1)
在编写单元测试用例时,您无需使用以下方法创建TokenService
对象: -
TokenService tokenService = new TokenService()
那里已经存在一个隐含的service
对象,您可以使用它: -
@TestFor(TokenService)
class TokenServiceSpec extends Specification {
def setup() {
}
def cleanup() {
}
def "test generateToken"() {
expect:
service.generateToken(5).length() == 5
}
}