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

上記のサンプル コードでは、3 行目で NullPointerException が発生して失敗します。なんでそうなの?

これに関する私の考え:

EITHER..any()は、メソッドがトリガーされるオブジェクトのマッチングではなく、パラメーターのマッチングに使用する必要があります。

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

4

1 に答える 1

7

あなたがする必要があります:

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

any() (anyObject() の短いエイリアス) は、任意の引数に一致する Mockito 引数マッチャーであり、次のようにのみ使用する必要があります。

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

any() は null を返すため、コードは次と同等でした

when(((Foo) null).someMethod()).thenReturn("Hello");
于 2011-06-21T00:08:51.647 に答える