Mockito: возвращает NULL при вызове X

#java #mockito

#java #mockito

Вопрос:

Я должен издеваться BufferedReader , чтобы возвращать значения, которые я хочу:

 BufferedReader readerMock = mock(BufferedReader.class);
when(readerMock.readLine())
  .thenReturn("firstLine")
  .thenReturn("secondLine")
  .thenReturn(null);

for (String next = reader.readLine(); next != null; next = reader.readLine())
  do something...
  

Проблема:

 readerMock.readLine(); //returns "firstLine" 
readerMock.readLine(); //returns "secondLine"
readerMock.readLine(); //PROBLEM: returns "secondLine" instead of NULL
  

Вопрос: Как вернуться null при третьем вызове

Ответ №1:

Работает для меня (Mockito 1.9.5):

 BufferedReader readerMock = mock(BufferedReader.class);
when(readerMock.readLine())
  .thenReturn("firstLine")
  .thenReturn("secondLine")
  .thenReturn(null);

System.out.println(readerMock.readLine());
System.out.println(readerMock.readLine());
System.out.println(readerMock.readLine());
  

Вывод:

Первая строка Вторая
строка
null