JMock Expectations,遍历 List

JMock Expectations, iterating through List

我有一个包含字符串的列表:

final List<String> serialNumbers=new ArrayList<String>();

for(int i=0;i<numberOfPieces;i++){
     serialNumbers.add(Integer.toString(i));
}

现在我希望我的 MockObject return 列表中的下一个元素在每次调用 mock 方法时作为字符串,我该怎么做?

context.checking(new Expectations(){{
     exactly(numberOfPieces).of (myMock).getSerialNumber();
     // will return serialNumbers i-th element
}});

解决方案:使用 onConsecutiveCalls,因为它可以执行一系列操作。

final ReturnValueAction[] serialNumbers=new ReturnValueAction[numberOfPieces];

for(int i=0;i<numberOfPieces;i++){
     serialNumbers[i]=new ReturnValueAction(Integer.toString(i)); 
}

context.checking(new Expectations(){{
     exactly(numberOfPieces).of (myMock).getSerialNumber();
     will(onConsecutiveCalls(serialNumbers)); 
}});