ton*_*ian 9 sql scala scalaquery
对于我的单元测试,我想设置一个数据库,用基本信息填充它,并在会话中运行每个测试,以回滚对数据库所做的所有更改,以便始终为每个测试提供一个原始副本.
我正在寻找类似的东西
db withSession {
<create my objects under test>
<run operations>
<run asserts>
this.rollback()
}
Run Code Online (Sandbox Code Playgroud)
回滚功能是在Scala Query的早期版本中,但它现在似乎缺失了.我该如何实现此功能?
最好的祝福
这是一个说明此行为的单元测试
GitHub 目前该链接出现 404 错误,但我从 google 缓存中提取了源代码:
package org.scalaquery.test
import org.junit.Test
import org.junit.Assert._
import org.scalaquery.ql._
import org.scalaquery.ql.extended.{ExtendedTable => Table}
import org.scalaquery.session.Database.threadLocalSession
import org.scalaquery.test.util._
import org.scalaquery.test.util.TestDB._
object TransactionTest extends DBTestObject(H2Disk, SQLiteDisk, Postgres, MySQL, DerbyDisk, HsqldbDisk, MSAccess, SQLServer)
class TransactionTest(tdb: TestDB) extends DBTest(tdb) {
import tdb.driver.Implicit._
@Test def test() {
val T = new Table[Int]("t") {
def a = column[Int]("a")
def * = a
}
db withSession {
T.ddl.create
}
val q = Query(T)
db withSession {
threadLocalSession withTransaction {
T.insert(42)
assertEquals(Some(42), q.firstOption)
threadLocalSession.rollback()
}
assertEquals(None, q.firstOption)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |