Tengo una prueba specs2 que utiliza una aplicación Fake y una base de datos mongodb integrada.Play 2.0 FakeApplication setup with test configuration
def inMemoryMongoDatabase(name: String = "default"): Map[String, String] = {
val dbname: String = "play-test-" + scala.util.Random.nextInt
Map(
("mongodb." + name + ".db" -> dbname),
("mongodb." + name + ".port" -> EmbeddedMongoTestPort.toString))
}
override def around[T <% Result](t: => T) = {
running(FakeApplication(additionalConfiguration = inMemoryMongoDatabase(), additionalPlugins = Seq("se.radley.plugin.salat.SalatPlugin"))) {
t // execute t inside a http session
}
}
El FakeApplication utiliza la configuración por defecto application.conf en el directorio conf y configuración adicional para las bases de datos de prueba que se crean para cada prueba.
Esto funcionó hasta que configuramos un conjunto de réplica mongodb. Ahora el application.conf contiene configuración para este RepliCat establece
mongodb.default.replicaset {
host1.host = "localhost"
host1.port = 27017
host2.host = "localhost"
host2.port = 27018
host3.host = "localhost"
host3.port = 27019
}
Como el FakeApplication utiliza la configuración por defecto las pruebas fallan debido a que los anfitriones de la replicaSet no se pueden encontrar. Quiero tener una configuración diferente para mis pruebas, básicamente eliminar la entrada mongodb.default.replicaset. Si mongodb.default.replicaset fuera un simple Map [String, String], sería fácil, ya que podría agregarlo a la configuración adicional, pero cuando intento hacerlo, falla porque el tipo de valor esperado no es una cadena, sino un objeto. También he intentado proporcionar un archivo test.conf por separado a FakeApplication a través del parámetro path.
override def around[T <% Result](t: => T) = {
running(FakeApplication(path = new java.io.File("conf/test.conf"), additionalConfiguration = inMemoryMongoDatabase(), additionalPlugins = Seq("se.radley.plugin.salat.SalatPlugin"))) {
t // execute t inside a http session
}
}
Eso tampoco funcionó ya que no cargó ninguna configuración.
Agradeceria cualquier ayuda. Gracias.
Chris