[英]EasyMock: Partially mocked class
在模拟类上没有模拟的所有方法是否正常工作?
例如
鉴于对象
public class Shape {
public void createShape(...){
....
}
public void removeShape(...){
....
}
...
}
如果这被嘲笑了
shape = createMock(Shape.class, new Method[]{Shape.class.getMethod("removeShape", new Class[]{...})});
是否所有其他方法,如createShape()
工作或你是否必须模拟你想要使用的所有方法?
简而言之,是的。
部分模拟的工作方式与模拟类的实例完全相同,但它们能够为您设置为模拟的方法添加期望。 当你有一个重写方法也依赖于该方法的超类实现时,这通常很有用。
看起来您的示例使用了弃用的createMock(Class,Method ...)方法,因此我将提供一个示例,说明如何为Shape类创建部分模拟。
final IMockBuilder<Shape> mockBuilder = EasyMock.createMockBuilder(Shape.class);
mockBuilder.addMockedMethod(Shape.class.getMethod("removeShape", new Class[]{...}));
final Shape mockShape = mockBuilder.createMock();
这将提供一个行为完全正常的Shape对象,直到它尝试使用removeShape方法,它需要对行为有一些期望。
就个人而言,我很少使用带有Method参数的addMockedMethod版本。 通常,我正在模拟的方法足以使用addMockedMethod(String)版本。 所以我很可能会使用以下内容:
final IMockBuilder<Shape> mockBuilder = EasyMock.createMockBuilder(Shape.class);
mockBuilder.addMockedMethod("removeShape");
final Shape mockShape = mockBuilder.createMock();
这对我的眼睛来说有点清洁,并取得了相同的效果。
但请记住,这些部分嘲讽遵守与嘲讽相同的法则。 所以你不能模仿这样的最终方法。
希望有助于
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.