【问题标题】:Mockito - MockSettings with springMockito - 带弹簧的 MockSettings
【发布时间】:2012-02-17 08:41:30
【问题描述】:

我正在尝试通过 spring bean 配置设置模拟对象(使用Mockito),但是我不知道如何为该对象设置MockSettings。特别是我想设置对象可序列化。

可以通过以下方式编程:

Object serializableMock = mock(Object.class, withSettings().serializable());
<bean id="object" name="object" class="org.mockito.Mockito" factory-method="mock">
    <constructor-arg value="object" />
    <constructor-arg value="org.mockito.MockSettings"> ???  </constructor-arg>
</bean>

有人可以指导我如何做到这一点吗?提前致谢

顺便说一句:我想使用纯 XML 配置。

【问题讨论】:

    标签: java xml spring mockito


    【解决方案1】:

    只能通过 XML,你不能。

    实际上,我不建议您在春季使用 Mockito 模拟进行测试。原因如下:

    • 通常当单元测试,你想单独测试一个类,毕竟是单元测试,所以Spring DI在这个案例。您只需自己注入测试对象的协作者,或者通过方便的@InjectMock 注释注入。

    • 但是,如果您需要使用另一个系统(例如带有数据库的 DAO)来测试事物,那么实际上您可能需要使用 Spring 接线来连接到真实数据库或内存中的一些数据库(如 H2)。但在这种情况下,您正在制作集成测试。在这种情况下,您很可能不需要模拟。

    也就是说,您可能有特定的需求,而上述观点可能与您的特定有界上下文无关。但话又说回来,在我看来,如果它是具体的,我认为自己制作一个简单的 MockSettings factory bean (甚至可以配置)并不过分。

    例如您可以在应用程序的技术模块中一劳永逸地编写此代码:

    public class SpringMockSettingsFactoryBean extends AbstractFactoryBean<MockSettings> {
        @Override public Class<Multimap> getObjectType() {
            return MockSettings.class;
        }
    
        @Override protected Multimap<String, String> createInstance() throws Exception {
            // ... your code
    
            return mockSettings;
        }
    }
    

    在 bitbucket 上有一个项目 springockito,它试图在 spring 中拥有一个以 mockito 为中心的命名空间。我不认为该项目可以做到这一点,但框架的作者可能有兴趣实现该功能。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      是的,你可以通过 XML 来实现

         <bean id="mockSettings" class="org.mockito.Mockito" factory-method="withSettings" init-     method="verboseLogging">
      
          </bean>
          <bean id="sqsHelper" class="org.mockito.Mockito" factory-method="mock">
              <constructor-arg value="com.elsevier.vtw.aws.helper.SQSHelper"/>
              <constructor-arg ref="mockSettings" />
      
          </bean>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-14
        • 1970-01-01
        • 1970-01-01
        • 2014-06-27
        相关资源
        最近更新 更多