如何在SORM上删除和创建表?

时间:2012-12-02 01:11:49

标签: scala sorm

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

2 个答案:

答案 0 :(得分:2)

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

以下自定义功能可能对您有所帮助:

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

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

withDb { db =>
  db.save(...)
  db.query[...](...)
}

答案 1 :(得分:2)

我的解决方案是定义重新加载方法以删除并重新创建表而不重新连接。我的实例定义:

class DatabaseTest extends Instance(...) {
  def reload = {
    connector.withConnection { connection =>
      connection.dropAllTables()
      Create.tables(mappings.values).foreach {
        t => connection.createTable(t)
      }
    }
  }
}