Ложный статический метод без параметров в Groovy
Мне нужно издеваться над статическим методом. Я использую подход EMC, описанный в Mocking статические методы с использованием Groovy. Как это
TestDaemon.metaClass.'static'.newDownloadManager = {downloadManager}
Метод newDownloadManager не имеет параметров и по какой-то причине не заменяется. Оригинальный код называется. В режиме отладки я вижу, что замыкание, которое я определяю, имеет параметр. Может быть в этом причина? Как я могу определить замыкание без параметров? Или как я могу издеваться над статическим методом без параметров?
2 ответа
Решение
Замыкание, написанное таким образом, имеет неявный параметр. Напишите закрытие с { -> }
синтаксис. Пример:
x = { println "foo" }
y = { -> println "foo" }
assert x.parameterTypes as List == [Object]
assert y.parameterTypes as List == []