JMock - 具有不同参数的几个调用

Dar*_*Kay 6 java unit-testing jmock

我想测试的方法是使用不同的参数调用mock方法:

public void methodToTest(){
   getMock().doSomething(1);
   getMock().doSomething(2);
   getMock().doSomething(3);
}
Run Code Online (Sandbox Code Playgroud)

在我的单元测试中,我想知道,如果methodToTest真正用这些参数调用那些方法.这是我写的代码:

@Test
public void myMockTest(){
    oneOf(mock).doSomething(1);
    oneOf(mock).doSomething(2);
    oneOf(mock).doSomething(3);
}
Run Code Online (Sandbox Code Playgroud)

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

exactly(3).of(mock).doSomething(with(Matchers.anyOf(same(1), same(2), same(3))));
Run Code Online (Sandbox Code Playgroud)

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

最后,这个工作:

exactly(3).of(mock).doSomething(with(any(Integer.class)));
Run Code Online (Sandbox Code Playgroud)

所以我知道,我的方法被调用了3次,任何整数.有没有办法确定,这正是我通过的论点?

Ste*_*man 2

你是否用检查块包围了期望?

context.checking(new Expectations() {{
  oneOf(mock).doSomething(1);
  oneOf(mock).doSomething(2);
  oneOf(mock).doSomething(3);
}});
Run Code Online (Sandbox Code Playgroud)

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