答案 0 :(得分:2)
答案 1 :(得分:2)
iwein是正确的;但是,在某些情况下(例如嵌入式系统),内存很少,而且您不想使用或不能使用不变性。
我找到的解决方法是为每次调用使用不同的模拟,然后验证每个调用的模拟列表。
List<Mock> mocks = new ArrayList<Mock>();
...init list w/ mocks using for loop...
List<Object[]> expectedArgs = new ArrayList<Object[]>();
..init list w/ desired args...
mocks.get(0).callMethod(1, 2);
...do that some more...
for(int i = 0; i < mocks.size(); i++) {
Object[] desiredArgs = expectedArgs.get(i);
verify(mocks.get(i)).callMethod((int) desiredArgs[0], (int) desiredArgs[1]);
}
它不是那么漂亮,但你不必以这种方式使你的类不可变。
答案 2 :(得分:1)
我遇到了这个问题并最终使用了atLeastOnce
,如下所示:
private ActionRequest getRequestedAction() {
ArgumentCaptor<ActionRequest> captor = ArgumentCaptor.forClass(ActionRequest.class);
verify(adapter, atLeastOnce()).requestAction(captor.capture());
return captor.getValue();
}