Как предоставить URL-адрес тестовой модификации с помощью Hilt

В своем приложении я начал использовать Hilt в качестве DI. Итак, я создаю класс для модернизации в моем репозитории, как это

@InstallIn(ApplicationComponent::class)
object RetrofitModule {

    var baseUrl = "https://my.fancy.api"


    @Singleton
    @Provides
    fun providesRetrofitClient(): Retrofit {
        return Retrofit.Builder()
            .baseUrl(baseUrl)
            .addConverterFactory(GsonConverterFactory.create())
            .client(providesOkHttpClient())
            .build()
    }

    @Singleton
    @Provides
    fun providesOkHttpClient(): OkHttpClient {
        val okHttpClientBuilder = OkHttpClient.Builder()
        val loggingInterceptor = HttpLoggingInterceptor().apply {
            level = HttpLoggingInterceptor.Level.BODY
        }
        okHttpClientBuilder.addInterceptor(loggingInterceptor)
        return okHttpClientBuilder.build()
    }

    @Singleton
    @Provides
    fun providesJokeGeneratorService(retrofit: Retrofit): FancyApiService {
        return retrofit.create(FancyApiService::class.java)
    }

Мой вопрос, как я могу изменить URL-адрес, чтобы использовать его на Mockwebserver с Hilt?


person dudi    schedule 19.07.2020    source источник


Ответы (1)


Если вы используете разные варианты сборки, чтобы отделить макет от реального, вы можете создать два класса с точным именем как в макете, так и в реальном пакете и экстентом RetrofitModule из этого класса. Затем поместите различия, такие как baseUrl и т. д., в эти два класса.

class RetrofitModuleConstants {

    val baseUrl = "https://my.fancy.api"
}

@InstallIn(ApplicationComponent::class)
object RetrofitModule : RetrofitModuleConstants  {
    ...
}
person Erfan Gholami    schedule 20.07.2020