我正在使用slick 3,我正在尝试执行一些插入的集成测试,一些使用数据库的代码,然后我想在测试结束时回滚所有的插入或删除,但我找不到任何有关它的文档。
有可能吗?我怎样才能做到这一点?
发布于 2016-03-30 11:43:07
您需要在DBIOAction中使用. transactionally
例如
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
发布于 2016-03-26 17:49:45
我可以建议在测试之前和之后使用BeforeAndAfter scala-test特征删除并创建表模式,下面的代码如下:
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)https://stackoverflow.com/questions/36225446
复制相似问题