他のプライベートな静的メソッドを呼び出すこのメソッドをどうやって模擬することができますか?他のプライベート静的メソッドを呼び出す静的メソッドをモックするにはどうすればよいですか?
public class testA {
public static JSONObject retrieveOrder(String orderId)
throws Exception {
String url = "/contract/";
JSONObject order = new JSONObject();
order.put("orderId", orderId);
return orderPOST(url, order);
}
private static orderPOST(String url, JSONObject order) {
return orderPOSTString(url, order.toString());
}
private static orderPOSTString (String url, String order) {
//do another call to method which will return JSONObject
}
}
どのように私はちょうど私がそれらのプライベートのいずれかの方法を気にしないだけとしてretrieveOrder
方法を模擬することができますか?これらの私的静的メソッドについては、私はそれらを変更することはできませんので、そのまま受け入れる必要があります。
これは私のテストで:
@Test
public void testRetrieveOrderMethod() throws Exception {
String url = "/contract/";
JSONObject order = new JSONObject();
order.put("orderId", orderId);
PowerMockito.spy(testA.class);
PowerMockito.doReturn(url, order.toString()).when(testA.class, "orderPOST", Matchers.any(), Matchers.any());
JSONObject retrieved = testA.retrieveOrder("12345");
}
私はここで何かを逃した場合、私に知らせてください。私はNullPointerException
を実際にそれらのプライベートメソッドを呼び出すと思うので、続けています。
質問デバッグヘルプ(「なぜこのコードは機能していないのですか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法。 – GhostCat
これは:**あなたの*テスト中のクラス*もコンパイルされません!これら2つの静的メソッドには**返される型**がありません。 *合理的な*ここに入力を開始することから始めよう! **あなたが何をしようとしているかを明確に説明してください。 – GhostCat