我需要使用 EasyMock 模拟一个 void 函数,以便第一次调用返回异常,而下一次调用成功。
例如:
this.myObject.move((String) EasyMock.anyObject());
EasyMock.expectLastCall().once().andThrow(new RetryableDependencyException());
EasyMock.expectLastCall().once();
但这不起作用。
这是行不通的,因为第二个 expectLastCall() 找不到任何呼叫。
你有没有试过这个:
this.myObject.move((String) EasyMock.anyObject());
EasyMock.expectLastCall().once().andThrow(new RetryableDependencyException());
this.myObject.move((String) EasyMock.anyObject());
EasyMock.expectLastCall().once();
我知道这有点冗长,但它应该让你排序:)
最短的是
myObject.move(anyString());
expectLastCall().andThrow(new RetryableDependencyException()).asStub();
假设在异常之后多次调用该方法并不重要。如果这很重要,那将是
myObject.move(anyString());
expectLastCall().andThrow(new RetryableDependencyException());
myObject.move(anyString());
有趣的事实: