Макет определенного метода в слое DAO в junit - PullRequest
0 голосов
/ 05 июля 2019

У меня есть приложение с конечными точками остальных API.Я хочу написать контрольные примеры для этого.Это следует за архитектурой MVC.Для одной из конечных точек я хочу смоделировать метод в моем классе DAO.

Пример кода для моего тестового класса:

RequestBuilder requestGetBuilder = MockMvcRequestBuilders
                .get("/processcal/getdata/srn/{srn}",1000)
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON);

Этот контроллер будет вызывать уровень DAO, имеющий этот метод для моделирования.Я попытался использовать mockito, как показано ниже, в своем классе Test config:

    @Bean
    @Primary
    BookMarkDao bookMarkDao() {
        final BookMarkDao bookMarkDao = Mockito.mock(BookMarkDao.class);
        Mockito.when(bookMarkDao.fetchMrPostProcessCalc(Mockito.anyString()))
                .thenReturn(TestUtils.getMockResponse());
        return bookMarkDao;
    }

Проблема в том, что он имитирует весь DAO-компонент, поэтому для остальных конечных точек он не вызывает методы класса DAO и мое тестовое покрытиеснижается.Есть ли способ решить эту проблему?

1 Ответ

0 голосов
/ 10 июля 2019

Вы можете использовать определенный профиль для бобовых бинов и активировать этот профиль в необходимых тестовых случаях. Кстати, если ваше приложение основано на подпружиненной загрузке, вы можете использовать @MockBean вместо ручного создания макета вашего DAO в тестовых конфигурациях.

...