dagger2 как заменить реализации в тестах - PullRequest
0 голосов
/ 26 ноября 2018

Я пишу библиотеку Android, названную TimelapseLibrary.Он может снимать фотографии, обслуживать простой HTTP-сервер, чтобы контролировать процесс.Конечный клиент создает объект TimelapseLibrary, и это внутренне создает службу HTTP и многое другое.

Я не знаю, как проверить библиотеку, как смоделировать службу HTTP, которая создается, когда пользователь создает TimelapseLibrary.

ЧтоЯ обнаружил в Интернете, просто написать:

public class TimelapseLibrary {

    private HttpService httpService;
    public static TimelapseComponent component;

    public TimelapseLibrary() {
        if(component == null) {
            component = DaggerTimelapseComponent.create();
        }

        this.httpService = component.getHttpService();
    }
}

@Component
public interface TimelapseComponent {
    HttpService getHttpService();
}

И в тестах использовать это так:

TimelapseLibrary.component = customTestComponentDefined;
TimelaseLibrary lib = new TimelaseLibrary();

Но этот customTestComponent не может быть определен в androidTest , это не скомпилирует.Даже если, на мой взгляд, это все еще плохо, потому что мы используем статический вызов для установки компонента.

Как это сделать правильно?С использованием dagger2, mockito?

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