【发布时间】:2016-09-23 23:43:43
【问题描述】:
我正在扩展基本的 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 依赖项而不是构造函数参数来做到这一点?
【问题讨论】:
-
创建一个包含 bean 模拟的配置。然后在您的设置中重置模拟。 (在 Spring Boot 1.4 中,您将能够添加
@MockBean注释,这使得这更容易)。
标签: spring-boot mockito