オブジェクトのスパイまたはモックがあり、メソッドの呼び出しに問題があることを確認したいのですが、コンパイル時ではなく実行時にメソッド名を受け取ります
私は次のようなことをしたいと思います:
SimpleObj mockObject= Mockito.mock(SimpleObj.class);
Class myClass = SimpleObj.class;
Method meth = myClass.getMethod("getGuid");
Mockito.verify(meth.invoke(mockObject));
を使用して一種の回避策を作成しました
MockingDetails mockingDetails = Mockito.mockingDetails(mockObject);
Collection<Invocation> invocations = mockingDetails.getInvocations();
List<String> methodsCalled = new ArrayList<>();
for (Invocation anInvocation : invocations) {
methodsCalled.add(anInvocation.getMethod().getName());
}
assertTrue(methodsCalled.contains("getGuid");
PowerMockitoを使用するまで問題は機能します:標準メソッドでは機能しますが、メソッドが最終的な場合、メソッドは存在しませんmockingDetails.getInvocations()
(ただしmockingDetails.getInvocations()
、実際に存在しなくてもverify(mock).getGuid()
うまく機能します)
ですから、何かアイデア/アドバイスがあれば嬉しいです
よろしく