我在方法下面有一段代码。
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时返回它。