相关疑难解决方法(0)

如何使用Slick 3 + Specs2回滚集成测试?

我想为运行光滑的服务编写一些集成测试,然后通过回滚事务清理postgresql数据库,但是我没有办法做到这一点.我知道我可以测试已经组合在一起的DBIO对象并将它们回滚,但是如果我想在更高的抽象级别进行测试,它看起来不太可能.

在伪代码中,我想这样做:

StartDbTransaction() // setup
DoSomethingInDB() 
AssertSomething() 
RollBackDbTransaction() // teardown
Run Code Online (Sandbox Code Playgroud)

例如,如果我有这个(从play-silhouette-slick-seeds中简化):

class PasswordInfoDAO(db: JdbcBackend#DatabaseDef) {

    // ...
    def remove(loginInfo: LoginInfo): Future[Unit] =
        db.run(passwordInfoSubQuery(loginInfo).delete).map(_ => ())

}
Run Code Online (Sandbox Code Playgroud)

我以为我可以按照Specs2指南编写一个ForEach特性,这给出了一个通用的例子:

// a transaction with the database
trait Transaction

trait DatabaseContext extends ForEach[Transaction] {
    // you need to define the "foreach" method
    def foreach[R: AsResult](f: Transaction => R): Result = {
        val transaction = openDatabaseTransaction
        try AsResult(f(transaction))
        finally closeDatabaseTransaction(transaction)
    }

    // create and close a transaction
    def openDatabaseTransaction: Transaction = …
Run Code Online (Sandbox Code Playgroud)

scala playframework specs2 slick

9
推荐指数
1
解决办法
1212
查看次数

标签 统计

playframework ×1

scala ×1

slick ×1

specs2 ×1