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 手动创建模拟,如文档中所述。
如果模拟是使用@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 手动创建模拟,如文档中所述。