spring-boot – 如何在Spring Boot MockMvc单元测试中模拟自动连接的依赖项?

我正在扩展基本的Spring Boot示例,向我的控制器添加“自动连接”存储库依赖项.我想修改单元测试以为该依赖注入Mockito模拟,但我不确定如何.

我原以为我可以这样做:

@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依赖,而不是构造函数参数?

最佳答案
请使用@RunWith(MockitoJUnitRunner.class)代替@RunWith(SpringJUnit4ClassRunner.class)
你必须使用ExampleController exampleController;注入mocks的字段而不是在行中创建一个新的mvc = MockMvcBuilders.standaloneSetup(new ExampleController()).build();

转载注明原文:spring-boot – 如何在Spring Boot MockMvc单元测试中模拟自动连接的依赖项? - 代码日志