0

mockitoを使用して、特定のパラメータでメソッドが呼び出されたことを確認したいと思います。

私のコードでunit.permission().someCommand()は、 が呼び出されるたびに、インターセターのメソッドinvokeがそれとともに呼び出されます。invokeメソッドは次のようになります。

void invoke(MethodInvocation methodInvocation) ..

これは、インターセプターのメソッドが呼び出されたことを確認するテストです。

@Test
public void permission() throws Throwable {
    unit.permission().someCommand();

    verify(mockedMethodInterceptor, times(1)).invoke(any(MethodInvocation.class));
}

このテストでは、ご覧のとおり、MethodInvocation の任意のインスタンスを使用しています。

質問:

特定の MethodInvocation インスタンスをチェックして、invoke() メソッドが正しいパラメーターで呼び出されたことを確認する方法はありますか? この呼び出しメソッドは、someCommand() メソッドに関する情報を保持する必要があります。

4

1 に答える 1

0

はい。

この単純なケースでは、テストで値自体を使用するだけでおそらく問題ありません。

@Test
public void permission() throws Throwable {
    MethodInvocation expectedInvocation = makeItHoweverYouDo();
    unit.permission().someCommand();

    verify(mockedMethodInterceptor, times(1)).invoke(expectedInvocation);
}

それをコードによって実際に呼び出されるものにするには、本番コードのどこかにその値を挿入する必要がある場合があります。それを可能にするためにも、変更が必要になる場合があります。

呼び出しでMatchers を使用する場合は、どこでも使用する必要があります。verifyそのためにeq、値を照合するためのマッチャー ( ) があります。

    verify(mockedMethodInterceptor, times(1)).invoke(eq(expectedInvocation));

ここでは必要ありませんが、メソッドにanyマッチャーを使用する別の引数がある場合は、それが必要になります。

于 2013-04-04T21:24:06.390 に答える