Size: a a a

2020 June 09

АЕ

Алексей Ершов... in Dagger 2
Дважды да
источник

R

Roman K. in Dagger 2
Спасибо! 🙏🙏
источник

S

Singular in Dagger 2
Переслано от Singular
Каким образом мне заменить метод в Dagger 2?
вот код Код .
Гуглил все бестолку. Хочу заменить SchedulerProvider на TestSchedulerProvider.

1) Вариант я думал использовать. Созданый новый AppComponent, NetworkModules. Dagger выдает собирается
1) В NetworkModules использовать полиморфизм в методе provideNetworkScheduler. Dagger также не  собирается.

Короче замучался я с ним. Как быть?
источник

S

Singular in Dagger 2
Как тестовый провайдер передать в метод?
источник

IG

Ilya Gulya in Dagger 2
Singular
Как тестовый провайдер передать в метод?
Вам нужно создать наследника NetworkModules и переопределить метод provideNetworkScheduler.
То что вы написали - какой-то опыт из мира javascript будто. В java/kotlin такое не сработает.
источник

S

Singular in Dagger 2
Ilya Gulya
Вам нужно создать наследника NetworkModules и переопределить метод provideNetworkScheduler.
То что вы написали - какой-то опыт из мира javascript будто. В java/kotlin такое не сработает.
А через интерфейс если сделать?
источник

S

Singular in Dagger 2
типо полиморфизм
источник

IG

Ilya Gulya in Dagger 2
Разверните мысль :)
источник

IG

Ilya Gulya in Dagger 2
Вариант 1:
Сделать тествый Application,  в нём инициализировать билдер AppComponent с кастомным NetworkModule.
В кастомном NetworkModule переопределить метод предоставляющий scheduler и подменить на свой.
Вариант 2:
Сделать кастомный билдер AppComponent. В нём сделать
@BindsInstance
fun schedulerProvider(schedulerProvider: ISchedulerProvider): Builder
Модуль вообще не использовать, соответственно.
источник

S

Singular in Dagger 2
Ладно, тогда по другому вопрос задам)) как используют даггер в тестах? чтобы не переписывать кучу кода?
источник

S

Singular in Dagger 2
1 вариант?
источник

IG

Ilya Gulya in Dagger 2
Singular
1 вариант?
Оба варианта это разные способы переопределить зависимость в графе даггера.
Какой вы выберете - в общем-то без разницы :)
источник

IG

Ilya Gulya in Dagger 2
Singular
Как тестовый провайдер передать в метод?
Однако я бы советовал отказаться от подхода с прокидыванием всюду scheduler provider.
У него есть один существенный недостаток - разработчику нужно помнить что везде нужно прокинуть этот scheduler.
В RxJava куча методов неявно используют scheduler и если его не прокинуть - будет использоваться стандартный.
Необходимость в кастомном scheduler скорее исключение, чем правило. И оно должно быть явно объявлено в контракте компонента в котором используется кастомный scheduler.
Более корректный способ подменять Scheduler в тестах - использовать RxJavaPlugins
источник

S

Singular in Dagger 2
Ilya Gulya
Однако я бы советовал отказаться от подхода с прокидыванием всюду scheduler provider.
У него есть один существенный недостаток - разработчику нужно помнить что везде нужно прокинуть этот scheduler.
В RxJava куча методов неявно используют scheduler и если его не прокинуть - будет использоваться стандартный.
Необходимость в кастомном scheduler скорее исключение, чем правило. И оно должно быть явно объявлено в контракте компонента в котором используется кастомный scheduler.
Более корректный способ подменять Scheduler в тестах - использовать RxJavaPlugins
Дело даже не в шедулере. Я хочу в тестах даггер юзать, чтобы к примеру подменить Glide, или OkHttp.
источник

S

Singular in Dagger 2
В инете статьи нормальной нету
источник

IG

Ilya Gulya in Dagger 2
Singular
В инете статьи нормальной нету
Вы читали все статьи из шапки канала?
источник

S

Singular in Dagger 2
Ilya Gulya
Вы читали все статьи из шапки канала?
Пока нет
источник

IG

Ilya Gulya in Dagger 2
Рекомендую ознакомиться
источник

IG

Ilya Gulya in Dagger 2
большая часть вопросов отпадёт
источник

IG

Ilya Gulya in Dagger 2
цикл статей от Жени Мацюка покрывает большую часть кейсов
источник