私は、次のコードのために(getBatchId()とsendPost())静的関数をモックしようとしています:上記の方法のためのモック機能
public void doPost(){
String batchId = Utility.getBatchId();
Post post = new Post(batchId, userId, message);
String postJson = Utility.toJson(post);
Chat.sendPost(url,postJson)
}
ユニットテストケースコード:
mockStatic(Utility.class);
when(Utility.getBatchId()).thenReturn("demoBatchId1234");
mockStatic(Chat.class);
when(Chat.sendPost(url,postJson))
.thenReturn(CompletableFuture.supplyAsync(() -> HttpResponse.create()));
私はとき(Utility.getBatchId())thenReturn( "demoBatchId1234")で、次の例外を取得しています。
org.mockito.exceptions.misusing.MissingMethodInvocationException:テストケース実行している()「モック上のメソッド呼び出し」でなければならない引数を必要とします。例えば、 (mock.getArticles())when then return(articles);最終/プライベート/イコール()/のhashCode()メソッド:あなたはのいずれかをスタブ
:ので
また、このエラーが表示される場合があります。これらのメソッドスタブされている/確認することはできません。モーフィング方法 は非公開の親クラスで宣言されていません。
inside()擬似ではなく他のオブジェクトでメソッドを呼び出すとき。
あなたは輸入品で、全テストクラスを提供することができ、それで... 'mockStatic'メソッドはどこから来ますか? PowerMockitoを使用していますか?その場合、 'PrepareForTest'アノテーションを使用しますか?参照してください:http://stackoverflow.com/a/21116014/2891426 –
ありがとう@Nagy Vilmos ....問題は解決されました – avy