EasyMock:使用@Mock 创建的模拟的调用顺序

EasyMock: call order on mocks created with @Mock

如果模拟是使用@Mock 注释创建的,是否有任何方法可以验证模拟之间的方法调用顺序?

documentation 中所述,可以使用模拟控件来完成。但是 EasyMockRule 不暴露控制对象。 我查看了 EasyMockSupport 实现,但没有找到强制它对所有注入的模拟使用一个控件的方法。 :(

public class Test extends EasyMockSupport {

 @Rule
 public EasyMockRule mocks = new EasyMockRule(this);

 @Mock
 private SomeClass first;

 @Mock
 private OtherClass second;

 @TestSubject
 private UnderTest subject = new UnderTest ();

 @Test
 public void test() {
   expect(first.call());
   expect(second.call());
   ....
   //Verify that calls were in order first.call(), second.call()
 }
}

你是对的,这是不可能的。一个增强可能是允许在 @Mock 注释中设置一个控件。可以吗file an issue

在您的情况下,您必须使用相同的 IMocksControl 手动创建模拟,如文档中所述。