gpt4 book ai didi

android - MockWebServer 和 Retrofit with Callback

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:40 28 4
gpt4 key购买 nike

我想通过 MockWebServer 模拟网络通信。不幸的是, retrofit 回调永远不会被调用。我的代码:

    MockWebServer server = new MockWebServer();
server.enqueue(new MockResponse().setResponseCode(200).setBody("{}"));
server.play();

RestAdapter restAdapter = new RestAdapter.Builder().setConverter(new MyGsonConverter(new Gson()))
.setEndpoint(server.getUrl("/").toString()).build();

restAdapter.create(SearchService.class).getCount(StringUtils.EMPTY,
new Callback<CountContainer>() {

@Override
public void success(CountContainer countContainer, Response response) {
System.out.println("success");
}

@Override
public void failure(RetrofitError error) {
System.out.println("error");
}
});

server.shutdown();

当我使用没有回调的改造时,它起作用了。

最佳答案

通过 Callback,您告诉 Retrofit 调用请求并异步调用回调。这意味着您的测试会在任何事情发生之前退出。

有两种方法可以让它工作:

  • 在测试结束时使用锁并等待其中一个回调方法被调用。
  • 将同步 Executor 的实例(仅立即调用 .run() 的实例)传递给 RestAdapter 上的 setExecutors .Builder 以便后台调用和回调调用同步发生。

关于android - MockWebServer 和 Retrofit with Callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24489882/

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