AdminServiceProxyFactory

AdminServiceProxyFactory

我在方法下面有一段代码。

AdminServiceProxy proxy=new AdminServiceProxy();
boolean flag=proxy.isAdminFree();


如何使用Jmock模拟“ AdminServiceProxy”。由于对象是使用new运算符创建的。

最佳答案

你不能

一种可能的解决方案是创建AdminServiceProxyFactory接口和实现:

public interface AdminServiceProxyFactory {
    public AdminServiceProxy createAdminServiceProxy();
}

public class AdminServiceProxyFactoryImpl {
    public AdminServiceProxy createAdminServiceProxy() {
        return new AdminServiceProxy();
    }
}


然后在您的课程中添加一个setter和private属性:

public class Foo {
    private AdminServiceProxyFactory adminServiceProxyFactory;
    ...
    public void setAdminServiceProxyFactory(AdminServiceProxyFactory factory) {
        adminServiceProxyFactory = factory;
    }

    public myMethod() {
        ...
        AdminServiceProxy proxy=adminServiceProxyFactory.createAdminServiceProxy();
        boolean flag=proxy.isAdminFree();
        ...
    }

}


现在,您可以创建一个模拟AdminServiceProxyFactory并将其注入您的类中。然后,您告诉模拟工厂在调用模拟AdminServiceProxy时返回它。

10-08 01:50