Groovy似乎搞亂了我的存根。以下測試通過:如何使用Groovy在Mockito中重載方法?
MockitoStubTest2.java:
public class MockitoStubTest2 {
@Test
public void testStubbing() {
MyInterface myInterface = mock(MyInterface.class);
when(myInterface.someMethod(isA(MyClass.class))).thenReturn("foobar");
assertEquals("foobar", myInterface.someMethod(new MyClass()));
}
private interface MyInterface {
String someMethod(MyClass arg);
String someMethod(String arg);
}
private static class MyClass {}
}
然而,這一個失敗並groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method ...#someMethod
:
MockitoStubTest3.groovy:
public class MockitoStubTest3 {
@Test
public void testStubbing() {
MyInterface myInterface = mock(MyInterface.class);
when(myInterface.someMethod(isA(MyClass.class))).thenReturn("foobar");
assertEquals("foobar", myInterface.someMethod(new MyClass()));
}
private interface MyInterface {
String someMethod(MyClass arg);
String someMethod(String arg);
}
private static class MyClass {}
}
唯一的區別一個是用Java運行的,另一個是用Groovy運行的。
我該如何做到這一點,Mockito會成功在Groovy中存儲一個重載的方法?這是一個微不足道的例子,但我有一個需要測試的實際用例。
太好了!掙扎着這個問題也花了我整整一天,當時Mockito和Groovy升級到最新的主要版本。最終我發現了這個解決方案。非常感謝! – Windwalker