1

2 つのカスタム ArgumentMatchers があり、モックが引数の値に基づいて異なる値を返すようにしたいと考えています。

例:

when(myMock.method(new ArgMatcher1()).thenReturn(false);
when(myMock.method(new ArgMatcher2()).thenReturn(true);

残念ながら、when() の 2 回目の呼び出しで例外が発生します。引数が両方の ArgumentMatchers に一致する場合、Mockito は true を返すか false を返すかがわからないため、これは理にかなっています。Mockitoでこれを行う方法はありますか? 次のような場合もあります。

when(myMock.method(new ArgMatcher2()).thenReturn(false).elseReturn(true);
4

3 に答える 3

0

Mockito からデフォルト値を返すことに興味がある場合は、次のように達成しました。

when(myMock.myMethod(any())).thenReturn(true);
when(myMosk.myMethod("some other argumetn")).thenReturn(true);

それはあなたを助けますか?言うまでもありませんが、newキーワードの場合のようにマッチャーを使用したことはありません。Mockito がカスタムマッチャーをよく理解していない可能性があります。

于 2013-04-02T14:57:41.583 に答える
0

あなたのマッチャーがどのようにコーディングされているかはわかりませんが、もちろん 2 つの異なるマッチャーを持つことはサポートされています。おそらく、スタブしているメソッドは Mockito (最終) を介してモック化できません。

また、レコードについては、さまざまな方法でさまざまな戻り値を返すようにスタブに指示することができます。

when(myMock.method(new ArgMatcher2()).thenReturn(false, false, true).thenReturn(true);
于 2013-03-11T17:21:14.497 に答える