有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaSpring:模拟bean的正确方法

我有:豆子

<bean id="abstractBean" class="com.package.MyBean" abstract="true"/>

<bean id="heirBean" parent="abstractBean">
    <property name="someProperty" ref="anotherBean">
</bean>

问题:如何模拟heirBean?或者换句话说,如何模拟abstractBean


===========================================================================================

我是如何尝试这样做的[例外]:

<bean id="abstractBean" class="MockFactoryBean">
    <property name="type" value="com.package.MyBean"/>
</bean>

MockFactoryBean。java

public class MockFactoryBean<T> implements FactoryBean<T> {
    private Class<T> type;

    public void setType(Class<T> type) {
        this.type = type;
    }

    @Override
    public T getObject() throws Exception {
        return Mockito.mock(type);
    }

    @Override
    public Class<T> getObjectType() {
        return type;
    }

    @Override
    public boolean isSingleton() {
        return true;
    }

}

问题:我无法设置模拟的字段


共 (3) 个答案

  1. # 1 楼答案

    一般来说,你不会模仿父bean,而是模仿你想模仿的每个bean

    我理解你的问题:

    • 你有很多豆子
    • 而不是使用一些常见的功能
    • 你想模仿这种常见的功能吗

    虽然该理论通常不鼓励为测试进行重构,但测试的特定需求允许您看到重构代码的方法

    我建议:

    • 将通用功能转移到单独的接口+实现
    • 将该功能注入到所有使用它的bean中
    • 嘲笑这种常见的功能

    因此,您可以用用法取代继承,这将使您具有更大的灵活性

  2. # 3 楼答案

    我会使用春天的轮廓概念;从春季3.2开始。在Spring中有一个“profile”概念,您可以使用它来模拟bean的测试范围