在junit的DAO层中模拟特定方法

时间:2019-07-05 07:59:00

标签: junit mockito junit4 spring-test spring-test-mvc

我有一个带有其他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类方法,因此我的测试覆盖率降低了。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以将特定的概要文件用于模拟bean,并在必要的测试用例中激活此概要文件。顺便说一句,如果您的应用程序是基于spring-boot的,那么您可以使用@MockBean而不是在测试配置中手动制作DAO的模型。