我需要模拟一个静态方法。我正在使用Mocking static methods using groovy中描述的EMC方法。喜欢这个
TestDaemon.metaClass.'static'.newDownloadManager = {downloadManager}
newDownloadManager方法没有参数,由于某种原因它没有被替换。调用原始代码。在调试模式中,我可以看到我定义的闭包有一个参数。可能是那个原因?如何定义没有参数的闭包?或者我如何模拟没有参数的静态方法?
答案 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的内容(或重构测试中的代码)。