¿Acabar con todos los métodos de una clase maravillosa?

¿Existe una manera fácil de eliminar TODOS los métodos de una clase maravillosa? En una de mis pruebas, necesito asegurarme de que una determinada ruta de código no toque un servicio en absoluto.

Es decir, quiero burlarme de todos los métodos como este:

[meth1: {-> fail(msg)},
 meth2: {-> fail(msg)...}] as MyService

¿Existe una manera fácil de eliminar e interceptar todos los métodos de todos los tipos de argumentos y realizar alguna acción uniforme como esta?

preguntado el 10 de mayo de 11 a las 13:05

2 Respuestas

La forma más sencilla en la que puedo pensar es algo como esto:

MyService.metaClass.invokeMethod { String name, args ->
  assert false
}

contestado el 10 de mayo de 11 a las 18:05

If MyService es una interfaz que puede hacer esto:

MyService stub = {Object[] args -> fail(msg)} as MyService

No estoy seguro de si esto funciona cuando MyService es una clase

contestado el 10 de mayo de 11 a las 19:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.