У меня есть метод, который принимает строку и итератор:
public int doSomething(String str, Iterator<String> itr)
Я пытаюсь смоделировать класс, где находится этот метод, чтобы он возвращал мне целое число, в зависимости от переданных аргументов.Как я могу вызвать when()
в Mockito, чтобы он ожидал, что переданный итератор будет "равным" указанному мною?Поскольку переданный итератор где-то динамически создается в системе, я не могу использовать тот же его экземпляр в when()
, поэтому я могу сделать его копию только так, как ожидал:
List<String> aList = new ArrayList<String>();
aList.add("one");
aList.add("two");
MyClass myMock = Mockito.mock(MyClass.class);
Я попытался выполнить следующееи, похоже, ни один из них не работает:
Mockito.when(myMock.doSomething("some string", aList.iterator())).thenReturn(10);
Mockito.when(myMock.doSomething(Matchers.eq("some string"), Matchers.eq(aList.iterator()))).thenReturn(10);
Мне удалось только с использованием anyObject()
:
Mockito.when(myMock.doSomething(Matchers.eq("some string"), Matchers.anyObject())).thenReturn(10);
, но, конечно, я не могу установить другие результаты, в зависимости отв итераторе ...