繁体   English   中英

EasyMock:部分嘲笑的课程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM