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

时间:2017-06-05 03:07:02

标签: java unit-testing mocking mockito robolectric

我有代码,我想测试一个方法,但是只模拟该方法中的特定部分,例如,我想调用doNetworkWork并完全执行它并且只返回调用中的特定行为to: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);
    }

1 个答案:

答案 0 :(得分:0)

我发现很多时候,当你处于两难境地时,这是一个设计缺陷。在这种情况下,doNetworkNow方法可能属于一个单独的对象,然后你就可以正常模拟。

我无法确定,因为您没有为我提供足够的代码来提供良好的建议。