今日、それについて少し調べていたので、メモがてらまとめます。
Play2.0でテストを実装する場合、標準でSpecs2を使うかと思いますが、その場合にIn Memory Databaseに接続する際は、下記の記述をします。
import org.specs2.mutable._
class TestSample extends Specification {
"connect InMemoryDatabase" in {
running(FakeApplication(additionalConfiguration = inMemoryDatabase())) {
1 must beEqualTo(1)
}
}
}
ここでのポイントは
additionalConfiguration = inMemoryDatabase()です。
additionalConfigurationは、application.configから読み取った値を上書きしたり追記したりします。
ここで、Play2.0のinMemoryDatabaseの実装を見てみましょう。
def inMemoryDatabase(name: String = "default"): Map[String, String] = {
Map(
("db." + name + ".driver") -> "org.h2.Driver",
("db." + name + ".url") ->
("jdbc:h2:mem:play-test-" + scala.util.Random.nextInt)
)
}
このように引数なしでinMemoryDatabaseを呼ぶことで、additionalConfigurationに対して"db.default.driver"と"db.default.url"の値をMapとして渡す形になり、テスト時のDBの参照先がIn Memory Databaseになるというわけです。
0 件のコメント:
コメントを投稿