Java 使用FactoryBean注入模拟对象
我有一个FactoryBean(Spring)定义如下:Java 使用FactoryBean注入模拟对象,java,spring,unit-testing,autowired,easymock,Java,Spring,Unit Testing,Autowired,Easymock,我有一个FactoryBean(Spring)定义如下: public class AMockFactoryBean extends EasyMockFactoryBean<A>{ public AMockFactoryBean() { super(A.class); } @Override public A getObject() throws Exception { MockA a= new MockA();
public class AMockFactoryBean extends EasyMockFactoryBean<A>{
public AMockFactoryBean() {
super(A.class);
}
@Override
public A getObject() throws Exception {
MockA a= new MockA();
a.setB(createMock(B.class));
return new MockA();
}
}
MockA实现了几个抽象类,EasyMockFactoryBean利用了Spring FactoryBean方法
在我的app.xml配置中,我有:
<bean id="mockedA" class="AMockFactoryBean" />
结果:ATest中的mockedA已正确自动连接,但Spring已将自动连接字段A.b设置为null。在调试模式下,我看到如何调用AMockFactoryBean中的getObject(),以及如何为mockedA提供EasyMock的模拟实例。但是当调试器跳入ATest类时,mockedA.b为null。为什么?返回
返回新的moka()代码>而不是a。你的代码应该是
@凌驾
公共getObject()引发异常{
MockA a=新MockA();
a、 setB(createMock(B.class));
返回a;
}
<bean id="mockedA" class="AMockFactoryBean" />
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:testContext.xml")
public class ATest {
@Autowired
private A mockedA;
}