Мокито Когда / Затем Кулинарная книга
1. обзор
Эта поваренная книга показываетhow to use Mockito to configure behavior в различных примерах и сценариях использования.
format of the cookbook is example focused и практический - никаких посторонних подробностей и пояснений не требуется.
И, конечно же, если вы хотите узнать больше о хорошем тестировании с помощью Mockito, посмотритеthe other Mockito articles here.
Дальнейшее чтение:
Мокито - Использование шпионов
Как правильно использовать шпионов в Mockito, и чем шпионы отличаются от насмешек.
Mockito Mock Методы
Это руководство иллюстрирует различные способы использования стандартных статических методов Mockito API.
Мы собираемся быть реализациейmocking a simple list - той же реализацией, которую мы использовали в предыдущей кулинарной книге:
public class MyList extends AbstractList {
@Override
public String get(final int index) {
return null;
}
@Override
public int size() {
return 1;
}
}
2. Поваренная книга
настроить простое поведение возврата для макета
MyList listMock = Mockito.mock(MyList.class);
when(listMock.add(anyString())).thenReturn(false);
boolean added = listMock.add(randomAlphabetic(6));
assertThat(added, is(false));
настроить поведение возврата для макета альтернативным способом
MyList listMock = Mockito.mock(MyList.class);
doReturn(false).when(listMock).add(anyString());
boolean added = listMock.add(randomAlphabetic(6));
assertThat(added, is(false));
настроить макет, чтобы генерировать исключение при вызове метода
@Test(expected = IllegalStateException.class)
public void givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsThrown() {
MyList listMock = Mockito.mock(MyList.class);
when(listMock.add(anyString())).thenThrow(IllegalStateException.class);
listMock.add(randomAlphabetic(6));
}
настроить поведение метода с возвращаемым типом void - выбросить исключение
MyList listMock = Mockito.mock(MyList.class);
doThrow(NullPointerException.class).when(listMock).clear();
listMock.clear();
настроить поведение нескольких вызовов
MyList listMock = Mockito.mock(MyList.class);
when(listMock.add(anyString()))
.thenReturn(false)
.thenThrow(IllegalStateException.class);
listMock.add(randomAlphabetic(6));
listMock.add(randomAlphabetic(6)); // will throw the exception
настроить поведение шпиона
MyList instance = new MyList();
MyList spy = Mockito.spy(instance);
doThrow(NullPointerException.class).when(spy).size();
spy.size(); // will throw the exception
configure метод для вызова реального, базового метода на макете
MyList listMock = Mockito.mock(MyList.class);
when(listMock.size()).thenCallRealMethod();
assertThat(listMock.size(), equalTo(1));
настроить вызов фиктивного метода с настраиваемым ответом
MyList listMock = Mockito.mock(MyList.class);
doAnswer(invocation -> "Always the same").when(listMock).get(anyInt());
String element = listMock.get(1);
assertThat(element, is(equalTo("Always the same")));
3. Заключение
Этот формат является экспериментом - я публикую некоторые из моих кулинарных книг по внутренней разработке по заданной теме - поGoogle Guava,Hamcrest иnow Mockito. Цель состоит в том, чтобы эта информация была легко доступна онлайн и добавлялась к ней всякий раз, когда я сталкиваюсь с новым полезным примером.
Реализация всех этих примеров и фрагментов кодаcan be found over on GitHub - это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.