Groovy generates getters and setters for all your class' fields. So when you do this:
class Foo {
final bar
}
new Foo().bar
you're actually calling the generated method Foo.getBar().
I have a Spock specification that likes to check the invocations of such a generated getter:
def "some spock test"() {
given: def fooMock = Mock(Foo)
when: someFunction(fooMock)
then: 1 * fooMock.getBar()
}
someFunction() does fooMock.bar but I always get
Too few invocations for:
1 * fooMock.getBar() (0 invocations)
1 * fooMock.bar doesn't work, either. How can I check that bar is read from Foo in the test? It works, if I omit final, but this is a crappy solution...