JMockit Returns 空对象 class

JMockit Returns Empty Object class

我是 JMockit 的新手。我正在尝试模拟 class 的方法,但 属性 为空。以下示例:

WebServiceUtility:

@Component
public class WebserviceUtility {


   public SamResponse getSamResponse(Parameters myParam) {

       return callWebService.postCall(myParam);;
    }
}

服务Class:

@Autowired
private WebserviceUtility webServiceUtility;

    public void checkResponse() {
       MyParam myParam = new MyParam();

      SamResponse samResponse = WebserviceUtility.getSamResponse(myParam);

      if (samResponse.getGoodResponse != null) {
        //Do things here
      }
    }

SamResponse class

public class SamResponse() {

 private GoodResponse goodResponse;
 private String error;
 //setters and getters here..

}

JMockit class:

public void testSamResponseGood() {

      final SamResponse samResponse = new SamResponse();
      GoodResponse res = new GoodResponse();
      samResponse.setGoodResponse(res);

      MyParam param = new MyParam();
      param.setAtt("test");

      new Expectations() {{ 

            webServiceUtility.getSamResponse(param); 
            result = samResponse ;
            times = 1;


        }};

}

当我尝试检查 samResponse 的值时,属性 - error 和 goodResponse 均为 null,即使我在 new Expectations(){{}}; 中传递了值;我怎样才能 return 实际对象?我错过了什么?希望有人能给我一些启发。提前致谢。

我能够通过以下代码解决我的问题。 在参数中使用 withInstanceOf(clazz) 并提供实际对象(在新的 Expectataions 之上)返回实际对象。 我的旧代码是,我正在传递 MyParam.class 的实际实例,然后它 returns 预期的 goodResponse 对象。

旧代码:

MyParam params = new MyParams();
param.setAtt("test");
new Expectations() {{ 

        webServiceUtility.getSamResponse(params); 
        result = samResponse ;
        times = 1;


    }};

固定代码:

public void testSamResponseGood() {

  final SamResponse samResponse = new SamResponse();
  GoodResponse res = new GoodResponse();
  samResponse.setGoodResponse(res);


  new Expectations() {{ 

        webServiceUtility.getSamResponse(withInstanceOf(MyParam.class)); 
        result = samResponse ;
        times = 1;


    }};

}

希望这对遇到同样问题的其他人有所帮助。