仅模拟整个方法中的特定代码行
Mocking only specific code line inside whole method
我有我想测试方法的代码,但只模拟该方法中的特定部分,例如,我想调用 doNetworkWork
并完全且仅执行 return 调用的特定行为:mRestPR.callNetwork(restCall)
所以如果在调用之前会出现一些问题,我希望它成为 succeed/failed.
@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);
}
我发现很多时候当你陷入困境时,这是一个设计缺陷。在这种情况下,doNetworkNow 方法可能属于一个单独的对象,然后您就可以正常模拟了。
我不能肯定,因为你没有提供足够的代码让我提供好的建议。
我有我想测试方法的代码,但只模拟该方法中的特定部分,例如,我想调用 doNetworkWork
并完全且仅执行 return 调用的特定行为:mRestPR.callNetwork(restCall)
所以如果在调用之前会出现一些问题,我希望它成为 succeed/failed.
@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);
}
我发现很多时候当你陷入困境时,这是一个设计缺陷。在这种情况下,doNetworkNow 方法可能属于一个单独的对象,然后您就可以正常模拟了。
我不能肯定,因为你没有提供足够的代码让我提供好的建议。