Java EasyMock expect方法在for循环中返回多个不同的对象
我正在使用EasyMock对我的Java代码进行单元测试。在模拟列表中,我希望在调用get方法时,为每个元素返回不同的值 例如:Java EasyMock expect方法在for循环中返回多个不同的对象,java,return,easymock,Java,Return,Easymock,我正在使用EasyMock对我的Java代码进行单元测试。在模拟列表中,我希望在调用get方法时,为每个元素返回不同的值 例如: List<SearchResult> results = new ArrayList<>(); results.add(fControl.createMock(SearchResult.class)); results.add(fControl.createMock(SearchResult.class));
List<SearchResult> results = new ArrayList<>();
results.add(fControl.createMock(SearchResult.class));
results.add(fControl.createMock(SearchResult.class));
for (SearchResult result : results) {
EasyMock.expect(result.getFieldValue(Ref.ID)).andReturn("name:23:1")
}
fControl.replay();
List results=new ArrayList();
添加(fControl.createMock(SearchResult.class));
添加(fControl.createMock(SearchResult.class));
for(搜索结果:结果){
EasyMock.expect(result.getFieldValue(Ref.ID)).andReturn(“名称:23:1”)
}
fControl.replay();
第一次,我希望它返回“name1:23:1”,
对于第二个元素,我希望它返回“name2:23:2”
我知道简单的模拟有一个EasyMock.expect().andReturn().once()。但这似乎对我的案子不起作用
谁能帮我个忙吗?提前谢谢 你应该这样做
EasyMock.expect(resultEasyMockObject.getFieldValue(Ref.ID)).andReturn("name:23:1").times(1);
EasyMock.expect(resultEasyMockObject.getFieldValue(Ref.ID)).andReturn("name:34:2").times(1);
EasyMock.expect(resultEasyMockObject.getFieldValue(Ref.ID)).andReturn("name:45:3").times(1);
for循环中发生的事情是resultObject的同一个方法被多次模拟,并且只有最后一个模拟保持有效,因此在运行测试类时,您只接收最后一个模拟值作为输出
如果不使用for循环,您将实现的是getFieldValue()
被模拟,我们告诉编译器只返回一次答案
希望这有帮助
祝你好运 不,我认为这并不能解决我的问题,因为在每个循环中,“result”是一个新对象,所以即使将“times”设置为1,它也会返回与上一个循环相同的值。