Переопределить конфигурацию Spring Mongo с помощью Fongo

У меня есть приложение Spring, использующее интеграцию Spring-Mongo. В 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>

Я хотел бы переопределить это в нашей конфигурации пакета BDD с Fongo, чтобы в тестах не использовался настоящий mongo.

Меня немного сбивает с толку то, что именно настраивает «монго: монго». Я ожидал, что в конечном итоге вы получите com.mongodb.Mongo. XML, кажется, относится к Spring MongoType?

Я пытался это сделать в своей конфигурации BDD, но это не сработало:

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

person ryber    schedule 12.11.2016    source источник
comment
Какое исключение вы получаете?   -  person developer    schedule 12.11.2016
comment
Никто. Он просто продолжает использовать основной конфиг. Мой тест @Configuration игнорируется   -  person ryber    schedule 12.11.2016


Ответы (1)


В вашем test application context вам нужно настроить фонго следующим образом:

<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 подхвачен вашими тестами.

person Mike Shauneu    schedule 15.11.2016