2

単体テストするメソッドの一部は次のとおりです。

SomeTypeCollection<SomeType> someTypeCollection = ...
T currentObject = null;
while( ( currentObject = (T) someTypeCollection.next() ) != null ) {...}

単体テストの関連部分は次のようになります

@Mock
SomeTypeCollection<SomeType> someTypeCollectionMock;

@Mock
SomeType someTypeMock;

when(someTypeCollectionMock.next()).thenReturn(someTypeMock);

ただし、モックされた next() 呼び出しはモックされたオブジェクトを正常に返すように見えますが、キャストは次のエラーで失敗します

> SomeType$$EnhancerByMockitoWithCGILIB$$98474372 は (ActualTypeOfCurrentObject) にキャストできません

4

2 に答える 2

3

この問題は、次の変更を使用して Mockito で解決できます (

T extends SomeOtherType 

テスト中のメソッドで与えられます)

@Mock(extraInterfaces=SomeType.class)
SomeOtherType someTypeMock;

stub(someTypeCollectionMock.next()).toReturn((SomeType) someTypeMock).toReturn(null);
于 2013-09-20T11:37:30.773 に答える