使用Fongo覆盖Spring Mongo配置

时间:2016-11-12 13:56:55

标签: java spring mongodb spring-mongo fongo

我有一个使用Spring-Mongo集成的Spring应用程序。在主应用程序配置XML中,我们有这样的东西来定义Mongo实例(有几个):

<mongo:mongo id="mongoOne" replica-set="#{hostUrl}" >
    <mongo:options connections-per-host="25"
                   threads-allowed-to-block-for-connection-multiplier="5"
                   connect-timeout="10000"
                   max-wait-time="120000"
                   auto-connect-retry="true"
                   socket-keep-alive="true"
                   socket-timeout="5000" />
</mongo:mongo>

我想在使用Fongo的BDD套件配置中覆盖它,因此测试不会使用真正的mongo。

我真的被一些东西甩掉了......#mongo:mongo&#34;正在建立。我期待最终你得到一个com.mongodb.Mongo。 XML似乎是指Spring MongoType?

我在我的BDD配置中尝试了这个但是它不起作用:

@Bean(name = "mongoOne") @Primary
public Mongo mongoOne() { 
    return new Fongo("mongoOne").getMongo(); 
}

1 个答案:

答案 0 :(得分:4)

在你的test application context中,你需要像这样配置fongo:

<bean name="fongo" class="com.github.fakemongo.Fongo">
    <constructor-arg value="InMemoryMongo" />
</bean>
<bean id="mongo" factory-bean="fongo" factory-method="getMongo" />

<mongo:db-factory id="mongoDbFactory" mongo-ref="mongo" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoDbFactory"/>
</bean>

它将覆盖mongoTemplate以在内存mongo实现中使用。确保您的测试选择了test application context