8

オブジェクトのスパイまたはモックがあり、メソッドの呼び出しに問題があることを確認したいのですが、コンパイル時ではなく実行時にメソッド名を受け取ります

私は次のようなことをしたいと思います:

  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()うまく機能します)

ですから、何かアイデア/アドバイスがあれば嬉しいです

よろしく

4

2 に答える 2