Tôi có một thử nghiệm specs2 sử dụng FakeApplication và cơ sở dữ liệu mongodb được nhúng.Phát 2.0 thiết lập FakeApplication với cấu hình thử nghiệm
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
}
}
Các FakeApplication sử dụng cấu hình application.conf mặc định trong thư mục conf và cấu hình bổ sung cho các cơ sở dữ liệu thử nghiệm được tạo ra cho mỗi bài kiểm tra.
Tính năng này hoạt động cho đến khi chúng tôi thiết lập bộ bản sao mongodb. Bây giờ application.conf chứa cấu hình cho replicat này thiết lập
mongodb.default.replicaset {
host1.host = "localhost"
host1.port = 27017
host2.host = "localhost"
host2.port = 27018
host3.host = "localhost"
host3.port = 27019
}
Khi FakeApplication sử dụng cấu hình mặc định các cuộc thử nghiệm thất bại vì host của replicaset không thể được tìm thấy. Tôi muốn có một cấu hình khác nhau cho các bài kiểm tra của tôi, về cơ bản loại bỏ các mục mongodb.default.replicaset. Nếu mongodb.default.replicaset là một Map [String, String] đơn giản sẽ dễ dàng như tôi có thể thêm nó vào additonalConfiguration nhưng khi tôi cố gắng làm điều đó nó thất bại vì kiểu giá trị dự kiến không phải là một String mà là một đối tượng. Tôi cũng đã cố gắng cung cấp một tệp test.conf riêng biệt cho FakeApplication thông qua tham số đường dẫn.
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
}
}
Điều đó không có tác dụng vì không tải bất kỳ cấu hình nào.
Tôi rất cảm kích mọi trợ giúp. Cảm ơn.
Chris