2012-07-23 86 views
0

我用Easymock.createNiceMock嘲笑了一個對象。使用easymock調用for循環中的模擬對象

MYRepository mockedMyRepository = EasyMock.createNiceMock(MyRepositoryWrapper.class); 

EasyMock.expect(mockedRepository.findList(Asset.class, criteria)).andReturn(statusTypeList); 

在測試類中我有一個for循環,其中我稱之爲findList方法。它獲得第一個循環中的值,但是從下一個循環返回null

即使沒有循環,只有一次它返回我指定的值。

System.out.println("first"+this.myRepository.findList(Asset.class).get(0)); \\ returns the correct value 
System.out.println("second"+this.myRepository.findList(Asset.class).get(0)); \\ returns null 

這裏有什麼解決方法? 謝謝。

回答

2

添加

.anyTimes() 

於預期結束。所以,你得到

EasyMock.expect(mockedRepository.findList(Asset.class , criteria)).andReturn(statusTypeList).anyTimes(); 

否則,你是隱說一次只能指望它。

+0

感謝它的工作!但我想如果我使用createNiceMock,那麼它不會造成問題,我可以多次調用它。我錯了嗎? – Sara 2012-07-24 00:09:27

+1

請參閱這裏的「不錯的嘲笑」http://www.easymock.org/EasyMock3_0_Documentation.html。如果你沒有設置任何期望,一個很好的模擬會爲它的所有方法獲取默認行爲。默認行爲是返回false,零或null,並允許您調用任意次數。但是,通過設置期望值,您已經覆蓋了此方法的默認值。該期望包括預期的呼叫數量(默認爲一次呼叫)。 – 2012-07-24 00:13:35

+0

哦好吧,非常感謝:)。 – Sara 2012-07-24 00:15:28