tags:

views:

98

answers:

1

Right,

so when I set up my mock using the testing plugin's mockFor method, I expect a method that returns null. If I do

myControl.demand.theMethod {return null}

in the debugger, the value that I set the 'theMethod' call result to is some closure in the debugger.

If I do

myControl.demand.theMethod {->return null}

the value is null, as expected.

I dont understand the difference....

A: 

I hope I word this right

In the groovy documentation http://groovy.codehaus.org/Closures it states that "A Closure without -> , i.e. {} , is a Closure with one argument that is implicitly named as 'it'." .... "In some cases, you need to construct a Closure with zero arguments, e.g. using GString for templating, defining EMC Property etc. You have to explicity define your Closure as { -> } instead of just { }"

In essence, your mock was trying to use 'return' as an argument. You need the -> to say "I have no parameters to pass" and then put what you want it to return on the right side of the arrow

Jen
Ahhhh facepalm....the { return } implies one argument, the method i was mocking required 0 args, so {->} is correct....thanx
hvgotcodes