3

分離されたテストを作成するには、テーブルを削除して作成するか、各テストの前にテーブルをクリーンアップすると興味深いでしょう。SORMでそれを行う簡単な方法はありますか?

4

2 に答える 2

2

DropAllCreateinitModeに設定してテストごとに新しいインスタンスを作成し、後でclose()メソッドを使用してすべてのインスタンスのリソースを解放できます。

次のようなカスタム関数が役立つ場合があります。

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 に答える