我正在使用slick 3并且我尝试使用一些插入执行一些集成测试,一些使用db的代码然后我想在测试结束时回滚所有插入或删除但我找不到任何关于它的文档。
有可能吗? 我怎样才能实现它?
答案 0 :(得分:2)
您需要在. transactionally
DBIOAction
例如
val a = (for {
ns <- coffees.filter(_.name.startsWith("ESPRESSO")).map(_.name).result
_ <- DBIO.seq(ns.map(n => coffees.filter(_.name === n).delete): _*)
} yield ()).transactionally
val f: Future[Unit] = db.run(a)
了解更多信息 http://slick.typesafe.com/doc/3.1.1/dbio.html#transactions-and-pinned-sessions
答案 1 :(得分:1)
我可以建议在使用BeforeAndAfter
scala-test trait测试之前和之后使用下一个代码删除并创建表模式:
def createTable(): Future[Unit] = {
db.run(DBIO.seq(
MTable.getTables.map(tables =>
if (!tables.exists(_.name.name == table.baseTableRow.tableName))
db.run(table.schema.create)
)
))
}
def dropTable(): Future[Unit] = db.run(table.schema.drop)