Я не могу сказать вам, почему ваш код выше не работает, но в Groovy есть несколько способов насмехаться над классами Java без использования MockFor
. Например, если вы хотите перехватить все вызовы объекта, вы можете реализовать invokeMethod
в метаклассе классов, например,
class SomeJavaClass {
// methods not shown
}
def instance = new SomeJavaClass()
instance.metaClass.invokeMethod = {String name, args ->
// this will be called for all methods invoked on instance
}
В качестве альтернативы, если вы просто хотите предоставить объект, который поддерживает сигнатуры методов SomeJavaClass
, вы можете использовать Map
или Expando
со свойствами, где:
- имена свойств соответствуют именам методов
- значения свойства - это замыкания, которые принимают те же параметры, что и методы
Если вы можете предоставить немного больше информации о том, как используется фиктивный объект, возможно, я могу дать несколько более конкретных предложений.