Ложный статический метод без параметров в Groovy - PullRequest
2 голосов
/ 22 февраля 2011

Мне нужно издеваться над статическим методом.Я использую подход EMC, описанный в Пересмешивая статические методы, используя groovy .Вот так

TestDaemon.metaClass.'static'.newDownloadManager = {downloadManager}

Метод newDownloadManager не имеет параметров и по какой-то причине не заменяется.Оригинальный код называется.В режиме отладки я вижу, что заданное мной замыкание имеет параметр.Может быть в этом причина?Как я могу определить замыкание без параметров?Или как я могу издеваться над статическим методом без параметров?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Изменения мета-класса не видны в коде Java. Groovy не может помочь вам смоделировать статический метод, который вызывается из кода Java. Вместо этого вам придется использовать что-то вроде JMockit (или изменить код тестируемого кода).

2 голосов
/ 22 февраля 2011

Закрытие, написанное таким образом, имеет неявный параметр.Напишите замыкание с синтаксисом { -> }.Пример:

x = { println "foo" }
y = { -> println "foo" }

assert x.parameterTypes as List == [Object]
assert y.parameterTypes as List == []
...