始める無料で始める

ユニットテスト:データベースメッセージ

レッスンで扱った ErrorStoreInfoStore を考えます。process(String message) メソッドに [WARN] メッセージが渡されたとします。この場合、どちらのデータベースにも保存されないはずです。これを検証するテストを書いてください。

この演習はコースの一部です

Javaによるテスト入門

コースを見る

演習の手順

  • メッセージが infoStore に保存されていないことを検証します。
  • times() を使う検証アプローチで、errorStore にも保存されていないことを検証します。
  • 同じステートメント内で、呼び出されなかったデータベースメソッド 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);
    }
}
コードを編集して実行