gpt4 book ai didi

android - 为 okhttp 超时编写单元测试

转载 作者:太空狗 更新时间:2023-10-29 14:42:45 24 4
gpt4 key购买 nike

我已经为 okHttp SocketTimeoutException 编写了这样的测试用例:

    @Test
public void contactDetailsTimeOut() throws Exception {
server.enqueue(new MockResponse().setBody("{}").setBodyDelay(31, TimeUnit.SECONDS));

HttpUrl baseUrl = server.url("/v1/contact/");
userProfilePresenter.contactDetails(baseUrl.toString());
verify(userProfileView).error(isA(SocketTimeoutException.class), isA(String.class));
}

可以通过将 setSocketPolicy 设置为 SocketPolicy.NO_RESPONSE 来实现同样的效果

    @Test
public void contactDetailsTimeOut() throws Exception {
server.enqueue(new MockResponse().setBody("{}").setSocketPolicy(SocketPolicy.NO_RESPONSE));

HttpUrl baseUrl = server.url("/v1/contact/");
userProfilePresenter.contactDetails(baseUrl.toString());
verify(userProfileView).error(isA(SocketTimeoutException.class), isA(String.class));
}

因为我已经将 okHttp readTimeout 设置为 30 秒。此测试用例等待 30 秒通过。预期的行为。下面是okHttpClient的代码

private static OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.build();

我的问题是:有什么方法可以在更短的时间内测试 SocketTimeoutException 吗?我不想减少客户端的时间。

最佳答案

您可以在单例模式中创建一个自定义的 OkHttpClient,然后您可以在单元测试的 setup() 中准备它。

关于android - 为 okhttp 超时编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45207519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com