2017-05-08 2 views
0

아래에서이 방법에 대한 단위 테스트를 작성해야합니다. 그러나, 나는 전체 조롱 및/또는 PowerMockito 사용에 대해 상당히 새로운 것입니다. 이 방법은 다음과 같습니다.PowerMockito를 사용하여이 JSONObject를 조롱하는 방법은 무엇입니까?

public class Storage { 
    public static JSONObject addHeader(JSONObject input) throws JSONException { 
      try { 
       JSONObject header = new JSONObject(); 
       header.put("update_date", System.currentTime()); 
       header.put("created_date", System.currentTime()); 
       header.put("type", "storage"); 
       input.put("HEADER", header); 
      } 
      catch (JSONException e) { 
       e.printStackTrace(); 
      }      
      return input; 
} 

그리고 여기가 붙어 있습니다. 내 테스트 방법에서는이 코드 줄이 있습니다.

JSONObject testInput = Whitebox.invokeMethod(Storage, "addHeader", JSONMockTest()); 
//testInput is always return null so this is where I'm stuck at and as not sure what to do after this 

메소드를 실행 한 후 반환되는 JSONMockTest에 추가 키와 값이 포함되는지 확인하고 싶습니다. 아마도 매우 간단하지만 시작하는 방법을 모르겠습니다.

모든 도움을 주시면 대단히 감사하겠습니다.

+0

'JSONMockTest'란 무엇입니까? 메소드 매개 변수로'JSONObject'를 전달해야합니다. –

답변

0

귀하의 방법이 비공개가 아닌 한 Whitebox.invokeMethod을 사용할 필요가 없습니다. 부터 Whitebox.invokeMethod javadoc :

정적 개인 또는 내부 클래스 메서드를 호출하십시오. 이것은 개인 메소드 테스트에 유용 할 수 있습니다.

그냥 직접 호출 :

JSONObject resultJsonObject = Storage.addHeader(jsonObject); 

지금 당신이 resultJsonObject의 값을 주장 할 수 있습니다.

+0

밝혀졌습니다. 위에서 제안한 것처럼 Whitebox.invokeMethod를 사용할 필요가 없습니다. 그리고 전체 클래스에 mockStatic이 있기 때문에 값이 항상 null을 반환하는 이유를 발견했습니다. 당신의 도움을 주셔서 감사합니다. –