テストしているクラスが正しい依存クラスのメソッドを呼び出すことを確認しようとしています。そのため、メソッド パラメータを一致させようとしていますが、テストを脆弱にしたくないので、このテストの実際の値についてはあまり気にしていません。
しかし、Mockito は私が期待している動作をバグだと判断したため、設定に問題が発生しています。参考:
ArgumentMatcher
では、である可能性のあるパラメータに対して を定義する正しい方法は何でしょうかnull
?
問題 #134 が「修正」されたため、マッチャーは最初のケースでのみ一致するため、このコードは失敗します。4 つのケースすべてで機能するマッチャーを定義するにはどうすればよいでしょうか?
MyClass c = mock(MyClass.class);
c.foo("hello", "world");
c.foo("hello", null);
c.foo(null, "world");
c.foo(null, null);
verify(c, times(4)).foo(anyString(), anyString());
ベストアンサー1
Javadocsよりany()
Mockito 2.1.0以降は、非nullのみを許可します
String
。これはnull可能な参照なので、マッチnull
ラッパーは になりますisNull()
。この変更により、テストハーネスが Mockito 1.x よりもずっと安全になると考えました。
したがって、null 許容の文字列引数を一致させる方法は、明示的な宣言です。
nullable(String.class)