简而言之,是的。
部分模拟的工作方式与模拟类的实例完全相同,但它们能够为您设置为模拟的方法添加期望。当您有一个也依赖于该方法的超类实现的覆盖方法时,这通常很有帮助。
看起来您的示例正在使用已弃用的 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();
这对我的眼睛来说更干净一些,并且达到了相同的效果。
但请记住,这些部分模拟与完全模拟遵循相同的规律。所以你不能像这样模拟 final 方法。
希望有帮助