Ложный статический метод без параметров в Groovy

Мне нужно издеваться над статическим методом. Я использую подход EMC, описанный в Mocking статические методы с использованием Groovy. Как это

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

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

2 ответа

Решение

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

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

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

assert x.parameterTypes as List == [Object]
assert y.parameterTypes as List == []
Другие вопросы по тегам