Переопределить конфигурацию 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, чтобы в тестах не использовались настоящие монго.
Я немного сбит с толку тем, что именно настраивает "Монго: Монго". Я ожидал, что в конечном итоге вы получите com.mongodb.Mongo из него. XML, кажется, ссылается на Spring MongoType?
Я попытался сделать это в моем BDD-конфиге, но он не работает:
@Bean(name = "mongoOne") @Primary
public Mongo mongoOne() {
return new Fongo("mongoOne").getMongo();
}
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
подобран вашими тестами.