我正在扩展基本的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
依赖项而不是构造函数参数吗?
答案 0 :(得分:6)
请使用@RunWith(MockitoJUnitRunner.class)
代替@RunWith(SpringJUnit4ClassRunner.class)
并且你必须使用ExampleController exampleController;
字段和注入的模拟,而不是在行mvc = MockMvcBuilders.standaloneSetup(new ExampleController()).build();
中创建一个新的