接口中有一个创建新对象并使用其功能的默认方法。所以我需要嘲笑它。但是如果不创建另一个返回新实例的默认方法,我就无法弄清楚。到目前为止,我曾经创建过处理对象创建的工厂,而不是模拟工厂方法。但不能在接口中执行此操作,因为接口不能具有在这种情况下作为工厂的实例变量。还有其他想法吗?我想在项目中保持一致,但现在我有两种不同的方法来避免在方法中创建对象。这是一个例子:
public interface ISomeInterface
{
default Integer callMe( )
{
Object someObject = new Object( ); // need to mock this
Integer result = someObject.finish();
result = result + 1;
return result;
}
}
当我不使用这样的接口时,我曾经用工厂重构代码;
default Integer callMeNotInterfaceClass( )
{
Object someObject = new Object( );
Integer result = instanceFactory.create().finish(); // I can mock create() method
result = result + 1;
return result;
}
我为包装器方法实现的唯一解决方案:
public Integer callMe( )
{
Object someObject = new Object( );
Integer result = wrapperMethodCall.finish(); // only solution so far. But now I have 2 different approaches in the project to avoid object creation.
result = result + 1;
return result;
}
default Object wrapperMethodCall() {
return new SomeObject().someMethodsToBeMocked();
}
守着星空守着你
相关分类