Temel Spring Boot örneklerinde, denetleyicime "otomatikleştirilmiş" bir depo bağımlılığı ekleyerek genişletiyorum. Bu bağımlılık için bir Mockito alayının enjekte edilmesi için birim testlerini değiştirmek isterim ama nasıl emin değilim.Spring Boot MockMvc Unit testlerinde otomatik kablolu bağımlılıklar nasıl takılır?
@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("[]")));
}
}
ama MockMvc
içine alay enjekte değildir:
Ben böyle bir şey yapabileceğini bekliyordum. Yapıcı argümanlarından ziyade, bunun @Autowired
bağımlılıkları ile nasıl yapılacağını açıklayabilir mi?
sizin fasulye bir taklidini içeren bir yapılandırması oluşturma hattı
mvc = MockMvcBuilders.standaloneSetup(new ExampleController()).build();
yenisini yaratma enjekte mocks ileExampleController exampleController;
alanını kullanmak zorunda ediniz. Daha sonra kurulumunuzda alayları sıfırlayın. (İlkbahar Çizgisi 1.4'te, bunu daha kolay hale getiren bir '@ MockBean 'notu ekleyebileceksiniz). –