正しいメッセージがエラー状態のコードで記録されていることを検証しようとしています。したがって、org.apache.commons.logging.Log
を嘲笑して正しく呼び出されたかどうかを確認しようとしています。Mockitoの引数をメソッドのシグネチャに一致させる方法
私が検証しようとしているメソッドのシグネチャは次のとおりです。error(Object, Throwable)
文字列が渡されることを期待していますが、それにはさまざまなものがありますが、「メッセージはキューには大きすぎます」というテキストが含まれています。この場合、throwableはnullになります。ここで
がこれを検証するための私のコードです:
Mockito.verify(errorLog, Mockito.atLeastOnce()).error(
Mockito.matches("*Message is too big for queue*"),
Mockito.isNull(Throwable.class));
これを実行すると、私もエラーが出ます:
Argument(s) are different! Wanted:
log.error(
matches("*Message is too big for queue*"),
isNull()
);
-> at com.company.TestClass.testMessageTooBig(TestClass.java:178)
Actual invocation has different arguments:
log.error(
|ClassUnderTest|Message is too big for queue (size=41). It will never fit, so discarding.,
null
);
ここでの問題は、そのMockito.matches()
は、それがために見えるということであることが表示されます実際のシグネチャが(Object、Throwable)の場合は、signature(String、Throwable)を持つメソッド
これらはどのように一致させることができますか? Mockito.any()
でMockito.matches()
を置き換えると、文字列が問題であることがわかります。
...なんだか不自然かもしれないが、それはとにかくもう少し近くにあなたを取得する必要がありますMockito.matchesへのあなたの議論からのアスタリスク?私はそれが正規表現を一致させるかもしれないと思っている。 – unigeek
あなたのケースで[ArgumentCaptor](http://site.mockito.org/mockito/docs/current/org/mockito/ArgumentCaptor.html)がオプションになる可能性があります – Mindaugas
私はArgumentCaptorを試してみましたが、役に立たなかった: '引数(s)は異なる!募集: log.error( [email protected]、 ヌル );アスタリスクを除去するために同じ ' – Steve