私はgetId()メソッドを呼び出すと最初のItemが0を返し、2番目のItem.getId()が1を返すようにスタブのコレクションを作成したいと思います。 getId()メソッドの値は、要素の等しいインデックスでなければなりません。私はこのmockitoを使ってスタブのコレクションを作成する
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private List<Item> items;
@Before
public void setUp() throws Exception {
initMocks(this);
}
@Test
public void mockCollection() throws Exception {
when(items.get(0).getId()).thenReturn(0);
when(items.get(1).getId()).thenReturn(1);
...
}
を試してみてくださいしかし、私はこの例外を取得:
java.lang.ClassCastException: org.mockito.internal.creation.jmock.ClassImposterizer$ClassWithSuperclassToWorkAroundCglibBug$$EnhancerByMockitoWithCGLIB$$42aa7d0b cannot be cast to com.gubin.designpatterns.behavioural.observer.Item
私はこの作業を行うことができますどのように?
申し訳ありませんが、なぜこの状況でRETURNS_DEEP_STUBSは機能しませんか?私はget(int)メソッドをモックしてからgetId()メソッドをモックしなければならないと思うか、RETURNS_DEEP_STUBSを正しく理解できません。 – user3610700
'RETURNS_DEEP_STUBS'が行うことができることは、送信するパラメータに関係なく同じオブジェクトを返すことです。したがって、パラメータに応じて異なるオブジェクトを返すように指定する方法が必要です。 – alayor
改良のおかげで – user3610700