我有以下代码:
def method() {
try {
dependency0.call({ arg -> })
} catch {
dependency1.call()
}
}
以及以下测试:
@Test
void shouldDoSomething(
@Mocked final Dependency0 dependency0Mock) {
final dependency1Mock = getDependency1Mock()
new Expectations() {{
dependency0Mock.call((Closure) any)
result = new Exception('expected')
final sut = new Sut(dependency1Mock, dependency0Mock)
sut.method()
}
测试运行时会发出以下异常:
mockit.internal.UnexpectedInvocation: Parameter "arg" of Dependency0#call(groovy.lang.Closure arg) expected null, got Sut$_method_closure1@cafebead
如何模拟一个接受Groovy Closure的方法?
更新:即使参数类型为Integer
,也会抛出相同的异常。
答案 0 :(得分:0)
不要使用JMockit。相反,使用http://johnpwood.net/2008/06/13/overriding-java-methods-in-groovy-for-unit-testing/中描述的地图强制。