我在一个小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 中的现有公共(public)方法。
当我执行测试时,我得到:
Failure: test generateToken(com.iibs.security.TokenServiceSpec)
| java.lang.NullPointerException
at com.iibs.security.TokenServiceSpec.test generateToken(TokenServiceSpec.groovy:22)
调试时,我可以验证 tokenService 是否正确实例化。
失败的原因可能是什么?
感谢您的任何建议。
最佳答案
在编写单元测试用例时,无需使用以下命令创建TokenService
对象:
TokenService tokenService = new TokenService()
那里已经存在一个隐式
service
对象,您可以使用like:- @TestFor(TokenService)
class TokenServiceSpec extends Specification {
def setup() {
}
def cleanup() {
}
def "test generateToken"() {
expect:
service.generateToken(5).length() == 5
}
}