android等待okhttp回调完成,android – 用Robolectric测试okHttp请求 – 回调

让我们假设您有下一个代码.接口:

@GET("/user/{id}/photo")

void listUsers(@Path("id") int id, Callback cb);

执行:

public void fetchData() {

RestAdapter restAdapter = new RestAdapter.Builder()

.setServer("baseURL")

.build();

ClientInterface service = restAdapter.create(ClientInterface.class);

Callback callback = new Callback() {

@Override

public void success(Photo o, Response response) {

}

@Override

public void failure(RetrofitError retrofitError) {

}

};

service.listUsers(435, callback);

}

首先,您需要将服务实例化更改为服务注入(作为参数或字段).我会把它作为参数:

public void fetchData(ClientInterface clients) {

}

在这篇文章非常简单之后:

@Test

public void checkThatServiceSuccessIsProcessed() {

ClientInterface mockedClients = mock(ClientInterface.class);

activity.fetchData(mockedClients);

// get callback

ArgumentCaptor> captor = (ArgumentCaptor>)ArgumentCaptor.forClass(Callback.class);

verify(mockedInterface).listUsers(anything(), captor.capture());

Callback passedCallback = captor.value();

// run callback

callback.success(...);

// check your conditions

}

用于模拟和验证的二手库是Mockito.

由于泛型,将有一个警告与captor实例化,但如果您将使用@Captor注释而不是手动创建captor,则可以修复它.

参数注入并不完美,特别是对于活动情况.这用于简化示例.考虑正确注入库或不使用库.我鼓励你尝试Dagger注射

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值