【发布时间】:2018-04-30 06:26:33
【问题描述】:
我正在为充当 MongoDB 接口的 Spring Boot Web 应用程序编写服务测试。理想情况下,我的服务测试将在最终达到 Mocked MongoTemplate 之前测试我的 Spring 应用程序的每个组件。以下代码使用 MockMvc 来访问我的 Web 端点。
@RunWith(SpringRunner.class)
@WebMvcTest(MyController.class)
@AutoConfigureDataMongo
public class MyControllerServiceTest {
@Autowired
private MockMvc mvc;
@Autowired
private MongoTemplate mongoTemplate
@SpyBean
private MyMongoRepository myMongoRepository;
@Test
public void createTest() {
MyObject create = new MyObject()
given(this.myMongoRepository.insert(create));
this.mvc.perform(post("localhost:8080/myService")...)...;
}
}
MyController 包含一个@Autowired MyMongoRepository,它又实现了MongoRepository 并需要一个mongoTemplate bean。仅当可以找到正在运行的 MongoDB 实例时,此代码才能正确执行(此示例更多的是我的服务和 MongoDB 之间的集成测试)。
如何在仍然使用 MockMvc 的同时模拟 MongoTemplate?
【问题讨论】:
标签: spring mongodb spring-mvc mockito spring-test