在Groovy中没有参数的模拟静态方法

时间:2011-02-22 17:56:46

标签: groovy mocking metaprogramming

我需要模拟一个静态方法。我正在使用Mocking static methods using groovy中描述的EMC方法。喜欢这个

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

newDownloadManager方法没有参数,由于某种原因它没有被替换。调用原始代码。在调试模式中,我可以看到我定义的闭包有一个参数。可能是那个原因?如何定义没有参数的闭包?或者我如何模拟没有参数的静态方法?

2 个答案:

答案 0 :(得分:2)

这样写的闭包有一个隐含参数。用{ -> }语法编写闭包。例如:

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

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

答案 1 :(得分:2)

Java代码看不到元类更改。 Groovy无法帮助您模拟从Java代码调用的静态方法。您将不得不使用类似JMockit的内容(或重构测试中的代码)。