Spov使用final字段调用Groovy生成的getter

Spov使用final字段调用Groovy生成的getter,第1张

概述Groovy generates getters and setters适用于所有课程领域.所以当你这样做时: class Foo { final bar}new Foo().bar 你实际上正在调用生成的方法Foo.getBar(). 我有一个Spock规范,喜欢检查这样生成的getter的调用: def "some spock test"() { given: def fo Groovy generates getters and setters适用于所有课程领域.所以当你这样做时:

class Foo {    final bar}new Foo().bar

你实际上正在调用生成的方法Foo.getbar().

我有一个Spock规范,喜欢检查这样生成的getter的调用:

def "some spock test"() {    given: def fooMock = Mock(Foo)    when:  someFunction(fooMock)    then:  1 * fooMock.getbar()}

someFunction()做fooMock.bar,但我总是得到

Too few invocations for:1 * fooMock.getbar()   (0 invocations)

1 * fooMock.bar也不起作用.如何在测试中检查从Foo读取的栏?它有效,如果我省略final,但这是一个糟糕的解决方案……

解决方法 对于最终属性,Groovy生成最终的getter方法.但是,使用Mock(),Stub()或Spy()创建的测试双精子纯粹是基于代理的,因此无法拦截最终方法.

由于您的测试代码是用Groovy编写的,因此您可以使用GroovyMock()来解决问题.

PS:1 * foo.getbar()和1 * foo.bar都是有效的符号.

PPS:如果你有一个具体的原因(模拟最终方法,模拟动态方法等),只喜欢GroovyMock()而不是Mock().有关详细信息,请参阅reference documentation.

总结

以上是内存溢出为你收集整理的Spov使用final字段调用Groovy生成的getter全部内容,希望文章能够帮你解决Spov使用final字段调用Groovy生成的getter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1224898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存