ユニットテスト:データベースメッセージ
レッスンで扱った ErrorStore と InfoStore を考えます。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);
}
}