前提・実現したいこと
JavaでSpringが提供しているMessageSource
インターフェイスを使用しているメソッドを作成しました。
Java
1import org.springframework.beans.factory.annotation.Autowired; 2import org.springframework.context.MessageSource; 3import org.springframework.stereotype.Service; 4 5import java.util.Locale; 6 7@Service 8public class MessageService { 9 @Autowired 10 MessageSource messageSource; 11 12 public String getMessageByCode(String code) { 13 return messageSource.getMessage(code, null, Locale.getDefault()); 14 } 15}
上記のgetMessagebyCode
メソッドをテストするためのテストケースをMockitoを用いて作成しました。
Java
1import org.junit.jupiter.api.Test; 2import org.mockito.InjectMocks; 3import org.mockito.Mock; 4import org.springframework.context.MessageSource; 5 6import java.util.Locale; 7 8import static org.junit.jupiter.api.Assertions.*; 9import static org.mockito.Mockito.doReturn; 10 11class MessageServiceTest { 12 13 @InjectMocks 14 MessageService service; 15 @Mock 16 MessageSource mockMessageSource; 17 18 @Test 19 void getMessageByCode() { 20 doReturn("Hello!").when(mockMessageSource) 21 .getMessage("greeting", null, Locale.getDefault()); 22 23 // テスト実行 24 String actualMessage = service.getMessageByCode("greeting"); 25 assertEquals("Hello!", actualMessage); 26 } 27}
発生している問題・エラーメッセージ
MessageServiceTest
クラスのgetMessageByCode
メソッドを実行し、テストを行うと以下のようなエラーが出力されます。
テストコードをどのように修正すればよいのか、回答をよろしくおねがいします。
org.mockito.exceptions.misusing.NullInsteadOfMockException: Argument passed to when() is null! Example of correct stubbing: doThrow(new RuntimeException()).when(mock).someMethod(); Also, if you use @Mock annotation don't miss initMocks()
補足情報(FW/ツールのバージョンなど)
下記に作成したコードを公開しています。
GitHubのリポジトリ
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/24 07:44