猿问

JMockit 返回空对象类

我是 JMockit 的新手。我试图模拟一个类的方法,但该属性为空。下面的例子:


网络服务实用程序:


@Component

public class WebserviceUtility {



   public SamResponse getSamResponse(Parameters myParam) {


       return callWebService.postCall(myParam);;

    }

}

服务等级:


@Autowired

private WebserviceUtility webServiceUtility;


    public void checkResponse() {

       MyParam myParam = new MyParam();


      SamResponse samResponse = WebserviceUtility.getSamResponse(myParam);


      if (samResponse.getGoodResponse != null) {

        //Do things here

      }

    }

SamResponse 类


public class SamResponse() {


 private GoodResponse goodResponse;

 private String error;

 //setters and getters here..


}

JMockit 类:


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 都是空的,即使我在新的 Expectations(){{}}; 中传递了值;如何返回实际对象?我错过了什么?希望有人能给我一些光。提前致谢。


富国沪深
浏览 253回答 1
1回答

叮当猫咪

我能够通过下面的代码解决我的问题。在参数中使用 withInstanceOf(clazz) 并提供实际对象(在新的 Expectataions 之上)返回实际对象。我的旧代码是,我正在传递 MyParam.class 的实际实例,然后它按预期返回 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;    }};}希望这对遇到相同问题的其他人有所帮助。
随时随地看视频慕课网APP

相关分类

Java
我要回答