【发布时间】:2014-03-05 06:48:58
【问题描述】:
使用EasyMock,如何创建以下类的过程方法的mock?我想创建一个可以接受MyObject.class 类型的任何对象的模拟。
public class Custom {
public void process(MyObject obj){
//code
}
}
如果该方法返回某些内容,我知道该怎么做,但是使用 void 方法我无法理解它。
【问题讨论】:
使用EasyMock,如何创建以下类的过程方法的mock?我想创建一个可以接受MyObject.class 类型的任何对象的模拟。
public class Custom {
public void process(MyObject obj){
//code
}
}
如果该方法返回某些内容,我知道该怎么做,但是使用 void 方法我无法理解它。
【问题讨论】:
下面是如何期待调用 void 方法
Custom mock = EasyMock.createMock(Custom.class); // create the mock
mock.process(EasyMock.anyObject(MyObject.class)); // invoke the method
EasyMock.expectLastCall(); // register it as expected
EasyMock.replay(mock); // set the state
mock.process(new MyObject()); // invoke the method in the test
EasyMock.verify(mock); // verify the call
【讨论】:
为了模拟 void 方法,您只需在调用重放之前在模拟对象上调用它。
@Test
public void testSomething() {
Custom mock = createMock(Custom.class);
mock.process(any(MyObject.class);
replay(mock);
// Your test comes here
// Optional - check the process was called
verify(mock);
}
【讨论】: