今日、それについて少し調べていたので、メモがてらまとめます。
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 件のコメント:
コメントを投稿