Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用FactoryBean注入模拟对象_Java_Spring_Unit Testing_Autowired_Easymock - Fatal编程技术网

Java 使用FactoryBean注入模拟对象

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();

我有一个FactoryBean(Spring)定义如下:

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;

}