2010-05-27 8 views
7

Rechts,grails mockFor Schließung wierdness

so, wenn ich meine mock die mockFor Methode der Verwendung einrichten Test Plugin, erwarte ich eine Methode , die null zurückgibt. Wenn ich

tun
myControl.demand.theMethod {return null} 

im Debugger, den Wert, den ich das ‚theMethod‘ Anruf Ergebnis auf einige Schließung im Debugger.

Wenn ich

myControl.demand.theMethod {->return null} 

der Wert null ist, wie erwartet.

Ich verstehe nicht den Unterschied ....

Antwort

9

Ich hoffe, dass ich Wort dieses Recht

In der groovy Dokumentation http://groovy.codehaus.org/Closures heißt es, dass „ein Verschluss ohne ->, also {}, ist ein Verschluss mit ein Argument, das implizit als "es" bezeichnet wird. " .... "In einigen Fällen müssen Sie eine Closure mit null Argumenten konstruieren, zB mit GString für Templating, EMC Property usw. definieren. Sie müssen Ihre Closure explizit als {->} anstatt nur {}"

definieren

Im Wesentlichen versuchte Ihr Spott, 'Rückkehr' als Argument zu verwenden. Du brauchst das -> zu sagen "Ich habe keine Parameter zu übergeben" und dann setze was du willst, dass es auf der rechten Seite des Pfeils zurückkommt

+1

Ahhhh facepalm .... die {Rückkehr} impliziert ein Argument, die Methode Ich habe mich über 0 Args lustig gemacht, also ist {->} korrekt .... danke – hvgotcodes