15

接続が必要ないようにいくつかのmongoクラスをモックアップしようとしていますが(かなり標準的なものです)、次のコードで問題が発生します:

when(dbCollection.find(isA(DBObject.class))).thenReturn(dbCursor);

これを実行すると、私が得られます:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
引数マッチャーの使用が無効です!
0 のマッチャーが予想され、1 が記録されました:
at ...GridFileManagerTest.beforeClass(GridFileManagerTest.java:67)

この例外は、マッチャーが生の値と組み合わされている場合に発生する可能性があります

マッチャーを使用する場合、すべての引数はマッチャーによって提供される必要があります。
例:
//正解:
someMethod(anyObject(), eq("String by matcher"));

詳細については、Matchers クラスの javadoc を参照してください。

私がこれを行うとしたら:

when(dbCollection.find(mock(DBObject.class))).thenReturn(dbCursor);

もうその問題はありません。ただし、これは私が望むことを達成していないようです-メソッドがDBObject型のオブジェクトで呼び出されたときに値を返したいです。

考え?

4

3 に答える 3

22

dbCollectionあなたの結果は、Mockito-mockでない場合(またはメソッドが静的または最終的である場合)に発生する結果と互換性があると思います。これは、マッチャーが使用されていない場所で使用されていることを意味します。したがって、「0人のマッチャーが予想され、1人が記録されました」。

于 2012-07-12T23:00:33.780 に答える