繁体   English   中英

带有服务的Grails规格测试

[英]Grails specification test with service

我正在尝试在Spock规范测试中使用服务。

 def "Registrate company and user with some valid data"() {
     given:
     RegistrationService registrationService = Mock()
     controller.registrationService = registrationService

     when:
     def data =  registrationService.register('test@test.sk','a','a','a','12345576','159159159','a','a','a','a','a')

     then:
     assert data.instance1.hasErrors() == false
     assert data.instance2.hasErrors() == false
     assert data.instance3.hasErrors() == false
}

我正在获取Null指针异常java.lang.NullPointerException: Cannot get property 'instace1' on null object.

如果我通过控制器运行该服务,则一切正常。

服务返回此[instance1:instance1,instance2:instance2,instance3:instance3]

您需要指定在调用模拟方法时模拟的RegistrationService返回的内容,例如

def "Registrate company and user with some valid data"() {
    given:
    RegistrationService registrationService = Stub()

    // you should probably be a bit more precise about the arg-list
    registrationService.register(*_) >> 
            [instance1: instance1, instance2: instance2, instance3: instance3]

    controller.registrationService = registrationService

    when:
    def data = registrationService.register('test@test.sk','a','a','a','12345576','159159159','a','a','a','a','a')

    then:
    !data.instance1.hasErrors()
    !data.instance2.hasErrors()
    !data.instance3.hasErrors()
}

注意,没有必要在then:块中使用assert ,如果每个语句返回真实值,则将其视为成功;如果返回false,则将其视为失败。

更新资料

我注意到报告的错误消息是

无法在空对象上获取属性“ instace1”。

因此看来您的代码中某处可能缺少“ n”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM