Я расширяю базовые примеры Spring Boot, добавляя зависимую от репозитория «autwired» для моего контроллера. Я хотел бы изменить модульные тесты, чтобы внедрить Mockito mock для этой зависимости, но я не уверен, как это сделать.Как издеваться над автозависимыми зависимостями в Spring Boot MockMvc?
Я ожидал, что я мог бы сделать что-то вроде этого:
@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
, а не от аргументов конструктора?
Создать конфигурацию, которая содержит макет ваших бобов. Затем в вашей настройке сбросьте насмешки. (В Spring Boot 1.4 вы сможете добавить аннотацию '@ MockBean', которая делает это проще). –