junit、mockito、mockMVC を使用して、webapp の動作をテストしています。インジェクションが理解できない依存関係に苦しんでいます。私のwebapp構造は次のとおりです。
Class Controller{
@Autowired Service searchService;
@RequestMapping("Search")
public returnType search(@RequestParam("parameter")String parameter){
searchService.doSearch(parameter);
}
}
そしてサービスクラス
Class Service{
@Autowired Service2 service2;
public returnType doSearch(String parameter){
//some code
service2.call(parameter);
}
}
このコントローラーの検索メソッドをテストする必要がありますが、service2 は現在稼働していないため、その呼び出しをモックする必要があります。service2 をモックできますが、コントローラーの mockMVC インスタンスに service2 のモックを挿入する方法がわかりません。私の知る限り、mockito の @InjectMocks は、モックを 2 レベルではなく 1 レベルだけ注入します。
編集:
以下を使用して、コントローラーの MockMVC インスタンスを取得しています
MockMvc controller;
controller = MockMvcBuilders.standaloneSetup(Controller);