Я использую android функции с кинжалом 2.
Мой AppComponent выглядит следующим образом:
@Singleton
@Component(modules = [AppModule::class])
interface ApplicationComponent : AndroidInjector<MyApplication> {
@Component.Factory
abstract class Builder : AndroidInjector.Factory<MyApplication>
}
И мой AppModule:
@Module(includes = [AndroidInjectionModule::class])
abstract class AppModule {
@Singleton
@Binds
@AppContext
abstract fun provideContext(app: MyApplication): Context
}
I попробуйте издеваться над этим и другими модулями (когда они появятся). Я читал, что использование @Component.factory
лучше, чем Builder, но я не знаю, как его высмеивать.
Я пытался издеваться над SharedPreferences
, как показано ниже, но я думаю, что я также должен предоставить издевательский Context
.
val sharedPrefs: SharedPreferences = Mockito.mock(SharedPreferences::class.java)
val context: Context = Mockito.mock(Context::class.java)
Mockito.`when`(context.getSharedPreferences(ArgumentMatchers.anyString(), ArgumentMatchers.anyInt())).thenReturn(sharedPrefs)
Mockito.`when`(sharedPrefs.getString(anyString(), anyString())).thenReturn(AuthType.UNDEFINED.toString())
Как имитировать Context
и предоставить имитацию SharedPreferences
?