私はFakeApplicationと埋め込みmongodbデータベースを使用するspecs2テストを持っています。Play 2.0テスト構成によるFakeApplicationセットアップ
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
}
}
FakeApplicationはconfディレクトリのデフォルトのapplication.conf設定と、テストごとに作成されるテストデータベースの追加設定を使用します。
これは私たちがmongodbレプリカセットをセットアップするまで見つけることができました。今、application.confはこのreplicatための設定が含まれているさらにreplicaSetのホストが見つからないためFakeApplicationは、テストが失敗し、デフォルトの設定を使用しているので
mongodb.default.replicaset {
host1.host = "localhost"
host1.port = 27017
host2.host = "localhost"
host2.port = 27018
host3.host = "localhost"
host3.port = 27019
}
を設定します。テスト用に別の設定をしたいのですが、基本的にmongodb.default.replicasetエントリを削除してください。 mongodb.default.replicasetが単純なMap [String、String]だった場合、additonalConfigurationに追加するだけで簡単にできましたが、これを実行しようとすると、期待値の型がStringではなくObjectであるため失敗します。また、pathパラメータを使って別のtest.confファイルをFakeApplicationに提供しようとしました。
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
}
}
これは、設定をロードしていないため動作しませんでした。
私は非常に助けていただければ幸いです。ありがとう。これはあなたが実行しているFakeApplicationのパス(あなたには、いくつかのケースで別のパスを持っているかもしれない)であることから
クリス