概要
今回は、モックを使用したコントローラクラスのテスト方法についてサンプルと合わせて説明する。
モックを利用したコントローラのテスト方法テスト対象のコントローラクラスが依存するクラスをモック化する場合のテスト方法を以下のサンプルで示す。
public class TicketSearchControllerMockTest {
@InjectMocks<!--1-->
Controller target;
@Mock
Service mockService;
MockMvc mockMvc;<!--2-->
@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(target).build();<!--2-->
}
@Test
public void test() throws Exception {
when(mockservice.executeService(Mockito.any())).thenThrow(new exception("test exception"));
// setup and run the test
MvcResult result = mockMvc.perform(post("リクエストマップ")<!--3-->
// assert
.andExpect(status().is(200))
.andExpect(view().name("view名"))
.andReturn();
assertThat(result.getModelAndView().getModelMap().get(modelに詰めたエラーメッセージのキー)).isEqual("test exception");
}
}
1.@InjectMocksアノテーションを使用しテスト時にモックオブジェクトが自動的に代入されるようテスト対象の呼び出し処理に付与する。
2.@InjectMocksアノテーションを付与したテスト対象のコントローラを使用してMockMvcをセットアップする。
3.performメソッドから返されたResultActionsのandExpectメソッドで取得したMvcResultを使用して実行結果の妥当性を検証する。
・statusメソッド:HTTPステータスコードを検証
・viewメソッド:コントローラが返したView名を検証
- 閲覧数 2088
コメントを追加