Groovy 为您所有类的字段生成getter和setter.所以当你这样做时:
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
也行不通.如何检查测试中是否bar
已读取Foo
?如果我省略final
,它可以工作,但这是一个糟糕的解决方案......