Я новичок в кинжале и впервые использую его в проекте. Я в основном пытаюсь написать тест для моего приложения. У меня есть appcomponent, который отлично работает на кинжале и сгенерировал DaggerAppComponent.
Компонент приложения
/**
* An interface to build the application instance and all dependencies
*
*/
@Singleton
@Component(modules = [AndroidSupportInjectionModule::class, ActivityBuilderModule::class])
interface AppComponent:AndroidInjector<BaseApplication> {
@Component.Builder
interface Builder{
@BindsInstance
fun application(application: Application):Builder
fun build():AppComponent
}
}
Базовое приложение
/**
* A class that serves as base class for dependencies injection through
* dagger component
*
*/
class BaseApplication: DaggerApplication() {
override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
return DaggerAppComponent.builder().application(this).build()
}
}
Что я хочу сделать сейчас, так это написать тест, в котором я создаю еще один компонент, расширяющий компонент приложения.
Я уже расширил модуль, который я намерен протестировать, как показано ниже
Модуль
class TestApplicationBuilderModule : AuthApiServicesModule() {
override fun provideAuthApiCall(authApiServices: AuthApiServices): AuthApiCall = mockk()
override fun provideAuthRegister(retrofit: Retrofit): AuthApiServices = mockk()
}
Но TestAppComponent Я создал ниже, а не генерирует DaggerTestAppComponent
Тестовый компонент приложения
@Singleton
@Component(modules = [AndroidSupportInjectionModule::class, ActivityBuilderModule::class])
interface TestAppComponent:AppComponent {
fun inject(authRepositoryTest: AuthRepositoryTest)
}
Я использую кинжал android ... пожалуйста, узнайте больше о моих зависимостях ниже
Зависимость
implementation "com.google.dagger:dagger-android:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version"
kapt "com.google.dagger:dagger-android-processor:$dagger_version"
implementation 'com.google.dagger:dagger:2.25.4'
kapt 'com.google.dagger:dagger-compiler:2.25.4'
androidTestImplementation "androidx.test:runner:$j_unit_rulesversion"
androidTestImplementation "androidx.test:rules:$j_unit_rulesversion"
testImplementation "junit:junit:$jUnitVersion",
"android.arch.core:core-testing:$archCoreVersion"
androidTestImplementation("com.squareup.okhttp3:mockwebserver:$mockWebServerVersion") {
exclude group: "com.squareup.okhttp3"
}
// mockk
testImplementation "io.mockk:mockk:$mockKVersion"