このリンク「モデルのテスト」部分に従って、Play
とにテストを記述しましたSqueryl
。しかし、「デフォルト」ではなく「テスト」という名前のデータベースを使用しています。次のコードは機能しません
import models.{AppDB, Bar}
import org.scalatest.FlatSpec
import org.scalatest.matchers.ShouldMatchers
import org.squeryl.PrimitiveTypeMode.inTransaction
import play.api.test._
import play.api.test.Helpers._
class BarSpec extends FlatSpec with ShouldMatchers {
"A Bar" should "be creatable" in {
running(FakeApplication(additionalConfiguration = inMemoryDatabase("test"))) {
inTransaction {
val bar = AppDB.barTable insert Bar(Some("foo"))
bar.id should not equal(0)
}
}
}
}
次のようなエラーが表示されました。
[info] BarSpec:
[info] A Bar
[info] - should be creatable *** FAILED ***
[info] com.typesafe.config.ConfigException$BadPath: path parameter: Invalid path ' - could not find datasource for default': Token not allowed in path expression: '-' (you can double-quote this token if you really want it here)
[info] at com.typesafe.config.impl.Parser.parsePathExpression(Parser.java:881)
[info] at com.typesafe.config.impl.Parser.parsePath(Parser.java:921)
[info] at com.typesafe.config.impl.Path.newPath(Path.java:206)
[info] at com.typesafe.config.impl.SimpleConfig.hasPath(SimpleConfig.java:70)
[info] at play.api.Configuration.reportError(Configuration.scala:549)
[info] at play.api.db.BoneCPApi.play$api$db$BoneCPApi$$error(DB.scala:274)
[info] at play.api.db.BoneCPApi$$anonfun$getDataSource$5.apply(DB.scala:413)
[info] at play.api.db.BoneCPApi$$anonfun$getDataSource$5.apply(DB.scala:413)
[info] at scala.Option.getOrElse(Option.scala:108)
[info] at play.api.db.BoneCPApi.getDataSource(DB.scala:413)
[info] ...
[error] Failed: : Total 5, Failed 3, Errors 0, Passed 2, Skipped 0
[error] Failed tests:
[error] DataSourceTest
[error] BarSpec
java.lang.RuntimeException: Tests unsuccessful
ここで inTransaction を直接使用することはできないと思います。しかし、「デフォルト」以外のデータベース名を使用した場合にテスト ケースに合格するにはどうすればよいでしょうか?
ありがとうございました。