Spring boot 使用MockMvc测试Spring控制器时如何初始化控制器字段

Spring boot 使用MockMvc测试Spring控制器时如何初始化控制器字段,spring-boot,spring-mvc,mockito,spring-boot-test,mockmvc,Spring Boot,Spring Mvc,Mockito,Spring Boot Test,Mockmvc,我使用SpringBoot2.2.4,使用@AutoConfigureMockMvc初始化MockMvc对象。并测试我的控制器的端点: mockMvc.perform(get(URL)).andExpect(status().isOk()); 但是我还必须在这个控制器中模拟一个服务。尝试在测试类中自动连接此控制器: @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PO

我使用SpringBoot2.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实例,而不是我设置为FaignService的实例


那么如何设置被测控制器的字段呢?如何设置模拟服务?

使用
@MockBean
,spring boot将处理它。在测试中创建一个类型为
FeignService
的字段,用
@MockBean
注释并运行测试。谢谢,它正在工作!