2012-07-23 40 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