Spov使用final字段调用Groovy生成的getter
发布时间:2020-12-14 16:25:42 所属栏目:大数据 来源:网络整理
导读:Groovy generates getters and setters适用于所有课程领域.所以当你这样做时: class Foo { final bar}new Foo().bar 你实际上正在调用生成的方法Foo.getBar(). 我有一个Spock规范,喜欢检查这样生成的getter的调用: def "some spock test"() { given: def f
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |