scala – Play Framework and Slick:测试数据库相关服务
发布时间:2020-12-16 18:14:20 所属栏目:安全 来源:网络整理
导读:我试图遵循最惯用的方式来进行一些经过全面测试的DAO服务. 我有几个案例类如下: case class Person ( id :Int,firstName :String,lastName :String)case class Car ( id :Int,brand :String,model :String) 然后我有一个像这样的简单DAO类: class ADao @In
我试图遵循最惯用的方式来进行一些经过全面测试的DAO服务.
我有几个案例类如下: case class Person ( id :Int,firstName :String,lastName :String ) case class Car ( id :Int,brand :String,model :String ) 然后我有一个像这样的简单DAO类: class ADao @Inject()(protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile] { import driver.api._ private val persons = TableQuery[PersonTable] private val cars = TableQuery[CarTable] private val personCar = TableQuery[PersonCar] class PersonTable(tag: Tag) extends Table[Person](tag,"person") { def id = column[Int]("id",O.PrimaryKey,O.AutoInc) def firstName = column[String]("name") def lastName = column[String]("description") def * = (id,firstName,lastName) <> (Person.tupled,Person.unapply) } class CarTable(tag: Tag) extends Table[Car](tag,"car") { def id = column[Int]("id",O.AutoInc) def brand = column[String]("brand") def model = column[String]("model") def * = (id,brand,model) <> (Car.tupled,Car.unapply) } // relationship class PersonCar(tag: Tag) extends Table[(Int,Int)](tag,"person_car") { def carId = column[Int]("c_id") def personId = column[Int]("p_id") def * = (carId,personId) } // simple function that I want to test def getAll(): Future[Seq[((Person,(Int,Int)),Car)]] = db.run( persons .join(personCar).on(_.id === _.personId) .join(cars).on(_._2.carId === _.id) .result ) } 我的application.conf看起来像: slick.dbs.default.driver="slick.driver.PostgresDriver$" slick.dbs.default.db.driver="org.postgresql.Driver" slick.dbs.default.db.url="jdbc:postgresql://super-secrete-prod-host/my-awesome-db" slick.dbs.default.db.user="myself" slick.dbs.default.db.password="yolo" 现在通过Testing with databases并试图模仿play-slick sample project 此外,在样本仓库中,有一些像“Application.instanceCache”[CatDAO]或app2dao(app)这样的“神奇”. 任何人都可以指出我正确处理测试游戏和光滑的一些完整的例子或回购吗? 谢谢. 解决方法
我同意这令人困惑.我不知道这是否是最佳解决方案,但我最终得到了一个单独的配置文件test.conf,它指定了一个内存数据库:
slick.dbs { default { driver = "slick.driver.H2Driver$" db.driver = "org.h2.Driver" db.url = "jdbc:h2:mem:play-test" } } 然后告诉sbt在运行测试时使用它: [..] javaOptions in Test ++= Seq("-Dconfig.file=conf/test.conf") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |