【问题标题】:MockWebServer enqueue by path condition?MockWebServer 按路径条件排队?
【发布时间】:2019-12-03 10:23:03
【问题描述】:

我正在使用来自 okhttp3 的MockWebServer 来针对模拟的外部网络服务器测试我的网络客户端。

我想配置模拟,以便按路径有条件地返回响应

像伪代码:

mockWebServer.expectPath("/products")
             .enqueue(new MockResponse().setBody(..))
             .expectPath("/items")
             .enqueue(new MockResponse().setBody(..));

这可能吗?

【问题讨论】:

    标签: mocking retrofit2 okhttp3 mockwebserver


    【解决方案1】:

    是的,这是可能的。我遇到了类似的问题,我最终在 MockWebServer 之上编写了一个小型开源 Android 库,以使其尽可能简单:Mockinizer

    在您的情况下,您的 OkHttpClient 设置如下所示:

    val mocks: Map<RequestFilter, MockResponse> = mapOf(
    
        RequestFilter("/products") to MockResponse().apply {
            setBody("..")
        },
    
        RequestFilter("/items") to MockResponse().apply {
            setBody("..")
        }
    
    )
    
    OkHttpClient.Builder()
            .addInterceptor(loggingInterceptor)
            .mockinize(mocks) // <-- just plug in your custom mocks here
            .build()
    

    您只需将模拟插入 OkHttpClient。您不必费心自己设置 mockWebServer。 Mockingizer 会自动为您执行此操作 ;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      相关资源
      最近更新 更多