Модульний тест: Повідомлення до бази даних
Згадайте 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);
}
}