私は基本的なSpringブートの例を拡張し、コントローラに「autowired」リポジトリの依存関係を追加します。私はその依存関係のためのMockitoモックを注入するために単体テストを修正したいと思いますが、どうしたらよいか分かりません。Spring Boot MockMvcユニットテストでautowired依存関係をモックする方法は?
私はこのような何かができることを期待していた:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class ExampleControllerTest {
private MockMvc mvc;
@InjectMocks
ExampleController exampleController;
@Mock
ExampleRepository mockExampleRepository;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mvc = MockMvcBuilders.standaloneSetup(new ExampleController()).build();
}
@Test
public void getExamples_initially_shouldReturnEmptyList() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/example").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("[]")));
}
}
をしかし、それはMockMvc
にモックを注入しません。誰でもコンストラクタの引数ではなく、@Autowired
の依存関係を使ってこれを行う方法を説明できますか?
あなたの豆のモックを含む構成を作成してライン
mvc = MockMvcBuilders.standaloneSetup(new ExampleController()).build();
で新しいものを作成するのに注入モックでExampleController exampleController;
フィールドを使用する必要があります。次に、あなたのセットアップでモックをリセットします。 (SpringBoot 1.4では '@ MockBean'アノテーションを追加することができます)。 –