JMock Expectations,迭代List

时间:2015-02-18 15:42:38

标签: java unit-testing mocking tdd jmock

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

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

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

现在我希望我的MockObject在每次调用mock方法时都将List中的下一个元素作为String返回,我该怎么做?

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

1 个答案:

答案 0 :(得分:0)

解决方案:使用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)); 
}});