我在一个小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
   }
}

07-26 00:48