如何使用map强制模拟groovy中的java.util.Map?

时间:2012-03-05 23:28:24

标签: groovy mocking coercion

我正在尝试使用groovy map强制模拟Map。 我已尝试过代码的各种变体,但结果始终为null。

Map<String, String> map = [get: {String  k -> "echo"}] as Map<String, String>

println map.get("a")

如果我使用map = {"echo"} as Map<String, String>则可行。

关于如何使第一个版本有效的任何想法?

感谢

1 个答案:

答案 0 :(得分:2)

像这样做直接强制的问题是重新定义Map的{​​{1}}已经是get并且Groovy source强制检查了您要做的是将Map之类的内容强制转换为Map,然后将其正常转换,而不是尝试根据需要创建代理。

要解决此问题,您可以使模拟对象与Map不同,如Map,然后它会强制进入您的界面类型:

Expando