2011-06-20 7 views
2
Foo mockFoo1 = mock(Foo.class); 
Foo mockFoo2 = mock(Foo.class); 
when(((Foo) any()).someMethod()).thenReturn("Hello"); 

に一致するようにMatchers.any()を使用して、ライン3がNullPointerExceptionで失敗します。なぜそうなのか?上記のサンプルコードでモックオブジェクト

この上の私の思考:

EITHER ... any()がパラメータに一致するのではなくメソッドがトリガーされているオブジェクトをマッチングするために使用すべきです。

またはany()は、実際の具体的なオブジェクトに対してのみ機能し、mockオブジェクトでは機能しません。

答えて

7

あなたが実行する必要があります。

Foo mockFoo1 = mock(Foo.class); 
Foo mockFoo2 = mock(Foo.class); 
when(mockFoo1).someMethod().thenReturn("Hello"); 
when(mockFoo2).someMethod().thenReturn("Hello"); 

任意の引数に一致し、次のようにのみ使用してくださいMockito引数マッチャである任意の()(ANYOBJECT()への短いエイリアス):

when(mockFoo1.someMethod(any())).thenReturn("Hello"); 

任意の()はnullを返しますので、あなたのコードが

when(((Foo) null).someMethod()).thenReturn("Hello"); 
+0

と同等であった。この答えは3日、Aに比類のない括弧に苦しむように見えますnd 4行目。完璧なソリューションとの違いはわずか2文字なので、編集できません。それを修正してください。どうも! – elias

関連する問題