时间:2010-07-26 09:35:27

标签: java unit-testing mockito

3 个答案:

答案 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();
}