我想测试的方法是使用不同的参数调用mock方法:
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次。有没有办法确定,我已经通过的论证完全?
答案 0 :(得分:2)
你是否用一个检查区围绕了期望?
context.checking(new Expectations() {{
oneOf(mock).doSomething(1);
oneOf(mock).doSomething(2);
oneOf(mock).doSomething(3);
}});
另外,您是否知道jmock不会强制执行序列,除非您明确这样做?