Заглушить все методы классного класса? - PullRequest
1 голос
/ 10 мая 2011

Есть ли простой способ заглушить ВСЕ методы классного класса? В одном из моих тестов мне нужно убедиться, что определенный путь кода вообще не затрагивает службу.

То есть я хочу издеваться над каждым методом так:

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

Есть ли простой способ заглушить и перехватить все методы всех типов аргументов и выполнить какое-то единообразное действие, подобное этому?

Ответы [ 2 ]

5 голосов
/ 10 мая 2011

Самый простой способ, который я могу придумать, выглядит примерно так:

MyService.metaClass.invokeMethod { String name, args ->
  assert false
}
2 голосов
/ 10 мая 2011

Если MyService - это интерфейс, вы можете сделать это:

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

Я не уверен, работает ли это, когда MyService является классом

...