Модульный тест: сообщение в базу данных
Вспомните классы ErrorStore и InfoStore из урока. Предположим, что метод process(String message) вызывается с сообщением типа [WARN] — а значит, оно не попадёт ни в одну из баз данных. Напишите тест, который проверяет это поведение.
Это упражнение является частью курса
Введение в тестирование на Java
Инструкции к упражнению
- Проверьте, что сообщение не попало в
infoStore. - Проверьте, что оно также не попало в
errorStore, используя подход сtimes(). - В том же выражении укажите метод базы данных
save(), который не должен был быть вызван.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
public class Main {
public static void main(String[] args) {
launchMockitoTestsAndPrint(MessageProcessorTest.class);
}
}
class MessageProcessorTest {
@Test
void process_savesNowhere_whenWrongMessageType() {
InfoStore infoStore = mock(InfoStore.class);
ErrorStore errorStore = mock(ErrorStore.class);
MessageProcessor processor = new MessageProcessor(infoStore, errorStore);
String message = "[WARN] The search is slow.";
processor.process(message);
// Verify infoStore was not called
____(infoStore);
// Verify errorStore.save was called 0 times
verify(errorStore, ____(0)).____(message);
}
}