НачатьНачать бесплатно

Модульный тест: сообщение в базу данных

Вспомните классы 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);
    }
}
Редактировать и запускать код