Spock 测试在 NullPointerException 上失败

Spock test is failing on NullPointerException

我正在开发一个小型 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
    }
}

其中 generateTokenTokenService 中现有的 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 对象,您可以像这样使用它:-

    @TestFor(TokenService)
    class TokenServiceSpec extends Specification {

def setup() {
}

def cleanup() {
}

def "test generateToken"() {
    expect: 
    service.generateToken(5).length() == 5
   }
}