3

为了进行隔离测试,在每次测试之前删除并创建表或清理它们会很有趣。使用 SORM 有什么简单的方法吗?

4

2 回答 2

2

您可以使用close()方法为每个测试创建新实例,并将其initMode设置为DropAllCreate并释放所有实例的资源。

像下面这样的自定义函数可能对您有帮助:

def withDb ( f : Instance => () ) {
  val db = new Instance ( ..., initMode = InitMode.DropAllCreate )
  f(db)
  db.close()
}

使用它可以很容易地始终在新创建的实例的上下文中工作:

withDb { db =>
  db.save(...)
  db.query[...](...)
}
于 2012-12-02T12:10:52.513 回答
2

我的解决方案是定义 reload 方法来删​​除和重新创建表而不重新连接。我的实例定义:

class DatabaseTest extends Instance(...) {
  def reload = {
    connector.withConnection { connection =>
      connection.dropAllTables()
      Create.tables(mappings.values).foreach {
        t => connection.createTable(t)
      }
    }
  }
}
于 2012-12-03T01:12:50.760 回答