6

我要测试的方法是调用具有不同参数的模拟方法:

public void methodToTest(){
   getMock().doSomething(1);
   getMock().doSomething(2);
   getMock().doSomething(3);
}

在我的单元测试中,我想知道,methodToTest 是否真的使用这些参数调用这些方法。这是我写的代码:

@Test
public void myMockTest(){
    oneOf(mock).doSomething(1);
    oneOf(mock).doSomething(2);
    oneOf(mock).doSomething(3);
}

在 (2) 我得到一个“意外调用” - 好像它无法区分不同的参数。所以我试过那个:

exactly(3).of(mock).doSomething(with(Matchers.anyOf(same(1), same(2), same(3))));

但这也没有达到我的预期。

最后,这个工作:

exactly(3).of(mock).doSomething(with(any(Integer.class)));

所以我知道,我的方法被任何整数调用了 3 次。有什么办法可以确保这正是我通过的论点?

4

1 回答 1

2

您是否用检查块围绕期望?

context.checking(new Expectations() {{
  oneOf(mock).doSomething(1);
  oneOf(mock).doSomething(2);
  oneOf(mock).doSomething(3);
}});

另外,您是否知道 jmock 不强制执行序列,除非您明确这样做?

于 2012-06-06T13:16:30.033 回答