#spring-boot #spring-mvc #mockito #spring-boot-test #mockmvc
#spring-boot #spring-mvc #mockito #spring-boot-test #mockmvc
Вопрос:
Я использую Spring Boot 2.2.4, используя @AutoConfigureMockMvc для инициализации объекта MockMvc. И тестирование конечных точек моего контроллера:
mockMvc.perform(get(URL)).andExpect(status().isOk());
Но я также должен имитировать службу в этом контроллере. Попытался просто автоматически подключить этот контроллер в тестовом классе:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
public class MyControllerIntegrationTest {
@Autowired
MyController myController;
А затем попытался установить макет службы для этого объекта:
FeignService feignService = mock(FeignService.class);
//setting up some when() invocations
//set feignService to myController with reflection
Но когда я выполняю запрос MockMvc GET и получаю доступ к контроллеру, появляется другой экземпляр MyController, а не тот, на который я установил feignService.
Итак, как настроить поля тестируемого контроллера? Как установить mocked service?
Комментарии:
1. Использование
@MockBean
и загрузка spring обработают это. Создайте поле типаFeignService
в своем тесте, прокомментируйте@MockBean
и запустите тест.2. Спасибо, это работает!