【发布时间】:2017-06-05 03:07:02
【问题描述】:
我有想要测试方法的代码,但只模拟该方法中的特定部分,例如,我想调用 doNetworkWork 并完全执行它,并且只返回调用时的特定行为: mRestPR.callNetwork(restCall) 所以如果在通话之前会有一些问题,我希望它成功/失败。
@Test
public void testMethod () {
Services sr = new Services ();
sr.doNetworkWork(new CallackService() {
@Override
public void onComplete(String response ){
//do some work
}});
}
Services.java
public void doNetworkWork (CallackService callback) {
RestCall restCall = new RestCall (RestMethodType.POST, uri, ADD_77, new
RestCall.RestCallListener() {
@Override
public void onComplete(Response response) {
if (callback != null) {
callback.onComplete(response.getMessage());
}
}
});
// some work
// mRestPR – private member
mRestPR.callNetwork(restCall);
}
【问题讨论】:
-
在我看来你想模拟
mRestPR和存根callNetwork。 -
那是正确的,由于某种原因,当我试图模拟它时,如果
mRestPR方法中的其他调用之一失败 -
好吧,你还没有真正展示足够的代码来帮助任何人找出原因。您如何设置您的模拟,以及如何将其注入您正在测试的对象中?
-
没有显示代码?那么我添加了什么?我不使用模型,我使用
Robolectirc- 这让我有可能创建对象并正常使用它,这是我的问题,如何在测试方法中“注入”特定行为作为私有成员 - @987654330 @
标签: java unit-testing mocking mockito robolectric