У меня есть класс, скажем SimpleClass
, который имеет две функции с одинаковым именем и одинаковым количеством параметров, но с разными типами параметров. Теперь я предполагаю, что для имитации их возвращаемых значений следует использовать два оператора when
с соответствующими сопоставлениями, но вместо этого при попытке получить следующую ошибку:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Обнаружено неуместное совпадение аргументов:
-> at mocks.MockTest.whenMethodsHaveS SimilarSignatures (MockTest.java:28)
-> в mocks.MockTest.whenMethodsHaveS SimilarSignatures (MockTest.java:28)
Вот пример того, что я пытаюсь сделать:
public class SimpleClass {
public boolean doWork(String value, String name) {
return false;
}
public boolean doWork(Integer value, String name) {
return true;
}
}
@RunWith(MockitoJUnitRunner.class)
public class MockTest {
private SimpleClass thing;
@Before
public void setup() {
thing = new SimpleClass();
}
@Test
public void whenMethodsHaveSimilarSignatures() {
when(thing.doWork(anyString(), anyString())).thenReturn(true);
when(thing.doWork(any(Integer.class), anyString())).thenReturn(false);
assertThat(thing.doWork("one", "name")).isTrue();
assertThat(thing.doWork(1, "name")).isFalse();
}
}
Хотя я не волшебник в Мокито, я использовал его некоторое время и никогда не сталкивался с этой проблемой. Мысли? Я использую Mockito-Core v2.2.9