2010-05-27 18 views
7

derecho,griales mockFor cierre wierdness

así que cuando creé mi maqueta utilizando el método de mockFor el plugin de pruebas, que esperan un método que devuelve un valor nulo. Si hago

myControl.demand.theMethod {return null} 

en el depurador, el valor que puse el resultado 'theMethod' es llamada a un cierre en el depurador.

Si hago

myControl.demand.theMethod {->return null} 

el valor es nulo, como se esperaba.

No entiendo la diferencia ....

Respuesta

9

espero palabra este derecho

En la documentación maravilloso http://groovy.codehaus.org/Closures afirma que "sin un cierre ->, es decir, {}, es un cierre con un argumento que se llama implícitamente 'it'. " .... "En algunos casos, necesitas construir un Cierre con cero argumentos, por ejemplo, usando GString para crear plantillas, definir la Propiedad de EMC, etc. Tienes que definir explícitamente tu Cierre como {->} en lugar de solo {}"

En esencia, su simulacro estaba tratando de usar 'return' como argumento. Necesita el -> para decir "No tengo parámetros para pasar" y luego poner lo que quiere que vuelva en el lado derecho de la flecha

+1

Ahhhh facepalm .... el {retorno} implica un argumento, el método me estaba burlando de 0 args, entonces {->} es correcto .... gracias – hvgotcodes