【发布时间】:2019-11-15 20:15:25
【问题描述】:
我有一个带有 rest api 端点的应用程序。我想为此编写测试用例。它遵循 MVC 架构。对于其中一个端点,我想在我的 DAO 类中模拟一个方法。
我的测试类的示例代码是:
RequestBuilder requestGetBuilder = MockMvcRequestBuilders
.get("/processcal/getdata/srn/{srn}",1000)
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON);
此控制器将调用具有该方法的 DAO 层进行模拟。 我尝试在我的测试配置类中使用如下模拟:
@Bean
@Primary
BookMarkDao bookMarkDao() {
final BookMarkDao bookMarkDao = Mockito.mock(BookMarkDao.class);
Mockito.when(bookMarkDao.fetchMrPostProcessCalc(Mockito.anyString()))
.thenReturn(TestUtils.getMockResponse());
return bookMarkDao;
}
问题在于它在模拟整个 DAO bean,因此对于其他端点,它没有调用 DAO 类方法,并且我的测试覆盖率降低了。有没有办法解决这个问题?
【问题讨论】:
-
我不认为你的控制器类的覆盖应该对 DAO 类调用有任何依赖,因为单元测试只测试类中存在的一段代码。
-
你能分享你的测试类文件吗?
标签: junit mockito junit4 spring-test spring-test-mvc