【问题标题】:Retrofit2 can't test with localhost:8080Retrofit2 无法使用 localhost:8080 进行测试
【发布时间】:2021-05-20 14:50:31
【问题描述】:

我正在编写一个单元测试来测试我的 API 调用,使用 Retrofit2。 我有一个可以在本地启动的服务器的模拟(使用 localhost:8080)

我总是收到 403 错误 - 禁止使用,但它与 Postman 配合使用效果很好

@Config(sdk = [28])
@RunWith(RobolectricTestRunner::class)
class MockServerTest {

    private lateinit var result: Response<CacheResult>
    private lateinit var api: FakeAPI

    @Before
    fun setUp() {
        api = CompanySingleton.retrofit.create(FakeAPI::class.java)
    }

    @Test
    fun getResult() {
        runBlocking {
            result = api.cache()
            assertThat(result.isSuccessful, equalTo(true))
        }
    }
}


object CompanySingleton {

    private val okHttpClient: OkHttpClient = OkHttpClient.Builder()
        .addInterceptor(Interceptor { chain ->
            val original = chain.request()

            val requestBuilder = original
                .newBuilder()
                .addHeader("Content-Type", "application/json")
                .addHeader("Authorization", "OAuth test")
                .addHeader("x-device-id", "test")

            val request = requestBuilder.build()
            chain.proceed(request)
        }
        ).build()

    val retrofit: Retrofit = Retrofit.Builder()
        .baseUrl("http://localhost:8080/")
        .client(okHttpClient)
        .addConverterFactory(GsonConverterFactory.create())
        .build()
}

【问题讨论】:

    标签: android unit-testing retrofit2 okhttp


    【解决方案1】:

    我假设 api 正在您的笔记本电脑/PC 上提供服务(并且肯定在其上运行的邮递员可以使用 localhost 访问它)。我认为您应该在 android 上使用笔记本电脑的本地 IP(例如 192.168.1.10)。另外不要忘记在防火墙上打开 8080 端口(或直接将其关闭)

    【讨论】:

    • 我的客户最终给了我另一个地址。但是谢谢你的帮助:)
    【解决方案2】:

    当我必须测试一些本地服务时,我通常使用ngrok。运行很简单,只需在终端输入:

    ./ngrok http 3000
    

    【讨论】:

      【解决方案3】:

      在我使用模拟器进行测试时,我将http://10.0.2.2:8000 用于访问我的本地主机

      【讨论】:

      • 我没有使用模拟器,因为它是单元测试。我不需要设备来启动它。
      猜你喜欢
      • 2017-02-08
      • 2016-10-05
      • 1970-01-01
      • 2013-02-25
      • 2019-11-24
      • 1970-01-01
      • 2016-06-15
      • 2014-09-18
      • 2013-09-29
      相关资源
      最近更新 更多