春天:模仿豆子的正确方式



我有:像这样的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;
    }
}

问题:我无法设置mock的字段。

有一个框架允许您将mocking功能添加到spring xml文件中-https://bitbucket.org/kubek2k/springockito/wiki/Home

通常,您不模拟父bean,而是模拟要模拟的每个bean。

正如我理解你的问题:

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

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

我建议:

  • 将通用功能转移到单独的接口+实现
  • 将该功能注入所有使用它的bean
  • 模拟常见功能

因此,您将继承替换为用法,这使您具有更大的灵活性。

我会使用spring的概要文件概念;从spring3.2.X开始,spring中有"profile"概念,您可以使用它来模拟测试范围的bean

相关内容

  • 没有找到相关文章

最新更新