Ich erweitere die grundlegenden Spring Boot-Beispiele, indem ich meinem Controller eine "autowired" Repository-Abhängigkeit hinzufüge. Ich würde gerne die Unit-Tests modifizieren, um einen Mockito-Mock für diese Abhängigkeit zu injizieren, aber ich bin mir nicht sicher, wie.Wie autowired Abhängigkeiten in Spring Boot MockMvc Unit Tests Mock Move?
Ich hatte erwartet, dass ich so etwas tun könnte:
@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("[]")));
}
}
aber das Mock in die MockMvc
nicht injizieren. Kann jemand erklären, wie man das mit @Autowired
Abhängigkeiten tut, anstatt Konstruktorargumente?
eine Konfiguration erstellen, die ein Modell Ihrer Bohnen enthalten. Dann setze in deinem Setup die Mocks zurück. (In Spring Boot 1.4 können Sie eine '@ MockBean' Annotation hinzufügen, die das erleichtert). –