Общее утверждение сервисов вызовов на нижний уровень с помощью Mockito - PullRequest
0 голосов
/ 26 мая 2019

В поисках общего способа утверждать, что вызов метода сервисов аспектов делает вызов сервисному вызову более низкого уровня с тем же именем.

Наше приложение использует OSGI и сервис аспектов, где есть несколько реализаций одного и того же интерфейса, при этом каждая реализация обращается к нижним уровням и, вероятно, выполняет некоторую постобработку. Например ...

public interface ConfigService {
    public List<String> getConfigurations();
}

public class ConfigServiceImpl implements ConfigService {
    private volatile ConfigDAO dao;

    @Override
    public List<String> getConfigurations() {
       List<String> configs = dao.getConfigurations();
       // do something with configs
       return configs;
    }
}

public class ConfigDAO implements ConfigService {
    @Override
    List<String> getConfigurations() {
       // database calls
       return configs;
    }
}

Я хотел бы придумать общий метод, похожий на verifyCallsDelegate(configService, mockConfigDao, "getConfigurations");, который позволил бы мне написать группу из одного теста тестирования линии через поведение вместо

configService().getConfigurations();
verify(mockConfigDao).getConfigurations();

Это надуманный пример, и я, вероятно, хотел бы сделать еще один шаг и утверждать, что значение, возвращаемое из mockConfigDao.getConfigurations(), было тем, что было возвращено из configService.getConfigurations(), но как только я закончу работу над самым простым тестом, я буду добавить такого рода смарты.

Может ли кто-нибудь предложить реализацию или подобную технику для моего `` `verifyCallsDelegate````` выше.

...