JMockit возвращает пустой класс объекта - PullRequest
0 голосов
/ 27 сентября 2018

Я новичок в JMockit.Я пытаюсь смоделировать метод класса, но свойство является нулевымПримеры ниже:

WebServiceUtility:

@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 () {{}};Как я могу вернуть реальный объект?Чего мне не хватает?Надеюсь, кто-нибудь может дать мне немного света.Заранее спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018

Мне удалось исправить мою проблему с помощью кодов ниже.Использование 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;


    }};

}

Надеюсь, это поможет другим, кто столкнется с той же проблемой.

...