动态更改模拟对象返回值

sna*_*ahi 1 java easymock powermock

假设我有以下方法:

public void runLoop(SomeIterator it){
    while(it.hasNext()){
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想传入一个SomeIteratorMock对象,该对象将返回Boolean.TRUE以进入循环,但我也希望它Boolean.FALSE在某个时刻返回(例如10次之后),是否有办法使PowerMock /发生这种情况EasyMock的?

在此先感谢您的帮助.

JB *_*zet 5

以下是EasyMock文档的摘录:

更改同一方法调用的行为

还可以为方法指定更改行为.方法times,andReturn和andThrow可以链接.例如,我们将voteForRemoval("Document")定义为

  • 前三次通话返回42,
  • 为接下来的四个调用抛出RuntimeException,
  • 返回-42一次.
expect(mock.voteForRemoval("Document"))
    .andReturn((byte) 42).times(3)
    .andThrow(new RuntimeException(), 4)
    .andReturn((byte) -42);
Run Code Online (Sandbox Code Playgroud)