仅模拟整个方法中的特定代码行

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 方法可能属于一个单独的对象,然后您就可以正常模拟了。

我不能肯定,因为你没有提供足够的代码让我提供好的建议。