2015-09-29 5 views
23

2つのパラメータStringとnullを使用してobjectDemoMethodメソッドを呼び出す、このオブジェクトobjectDemoを持つとします。今、私は、このメソッドはMockitoで呼び出されたことを確認したい:Mockitoのnull値のためのMatchers.any()

objectDemo.objectDemoMethod("SAMPLE_STRING", null); 

私はこの書かれている:

Mockito.verify(objectDemo, Mockito.times(1)).objectDemoMethod(Matchers.any(String.class), null); 

が、それは誤り与えている:

Invalid use of argument matchers for null value.

任意の他の方法はありますがヌル値を渡すには?

+1

quick side note: 'Mockito.times(1)'は 'verify'のデフォルトであり省略することができます。 –

答えて

34

引数マッチャーを1つの引数にのみ使用し、他の引数には使用しないので、取得しているエラーメッセージが表示されます。 MatchersのJavadocから:

If you are using argument matchers, all arguments have to be provided by matchers.

従って、修正は、同様の方法の第二パラメータに整合を使用することです。この場合、nullと一致する正規表現になります。 MockitoとJavaのバージョンによっては、あなたが持つことができます。

  • をMockito 2以降では、ArgumentMatchers.isNull()を使用することができます。これは、Java 8とし、上記の動作します:あなたはJavaの7歳以上で実行している場合は、Javaのこれらのバージョンでは型推論がないので、あなたは、この仕事をするために明示的なキャストが必要になりますことを

    verify(objectDemo, times(1)).objectDemoMethod(any(String.class), isNull()); 
    

    注意考慮に入れる方法の種類が呼び出されていない:

    verify(objectDemo, times(1)).objectDemoMethod(any(String.class), (String) isNull()); 
    
  • あなたはMockito 1を使用している場合は、代わりにMatchers.isNull(clazz)を使用することができます。

    verify(objectDemo, times(1)).objectDemoMethod(any(String.class), isNull(String.class)); 
    

Java ≤ 7またはMockito 1のケースでは、2番目のパラメータがタイプStringであるケースを使用します。これは、メソッドパラメータの実際の型に置き換える必要があります。

+1

ちょっとメモMockitoは 'Mockito.isNull(String.class)'を廃止しました。 '(String)Mockito.isNull()'のようになりますので、Tunakiの例は 'verify(objectDemo、times(1))のようになります。 objectDemoMethod(any(String.class)、String)isNull()); ' –

+0

@ScottLaHayコメントありがとう!あなたはこの答えを更新する必要があるのは間違いありません。 – Tunaki

関連する問題