0

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」が設定しているものに少しうんざりしています。最終的に com.mongodb.Mongo が得られることを期待していました。XML は Spring MongoType を参照しているようですか?

BDD 構成でこれを試みましたが、機能しません。

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

1 に答える 1

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あなたがあなたのテストで拾われていることを確認してください。

于 2016-11-15T09:06:00.610 に答える