2016-11-12 90 views
0

我有一個使用Spring-Mongo集成的Spring應用程序。在主應用程序配置XML我們有這樣的東西來定義蒙戈實例(有幾個):覆蓋Spring Mongo配置與Fongo

<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」建立起來。我期待着你最終得到一個com.mongodb.Mongo。 XML似乎是指Spring MongoType?

我曾在我的BDD配置嘗試這一點,但它不工作:

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

你得到的例外是什麼? – developer

+0

無。它只是繼續使用主配置。我的測試@Configuration被忽略 – ryber

回答

3

在你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被你的測試拿起。