1

:transactionMySQL 5.xDBを使用するRails3.0.4アプリ(現時点ではアップグレードできません)で、db_cleanerとcleanメソッドを使用しています。:truncationシードデータが失われるため、使用できません。

今、私たちは次の問題に直面しています。ActiveRecordは、たとえば:create、または:destroyActiveRecordベースのオブジェクトで呼び出されたときに、トランザクションを自動的に生成します。RSpecスイートでは、Machinistファクトリを使用して、すべてのテストのテストデータを作成しています。独自のトランザクションを作成する機能をテストしている場合、テスト内の呼び出しのbegin-commitサイクルはFactory.make!、内部トランザクション(によって開かれる:create)を終了するだけでなく、内部で開かれたトランザクションも終了するという問題に直面します。テストされたコード。その結果、db_cleanerによってトリガーされたロールバックは何もロールバックできず、テストの実行後もデータベース内にテストデータが残っています。

誰かがすでにこの問題に直面しているに違いないと思います。MySQLはネストされたトランザクションをサポートしていませんが、ActiveRecordはバージョン2.3.2以降、セーブポイントを作成することでそれらをシミュレートしているため、その動作は予期していませんでした。

誰かがその特定の問題を解決する方法についての情報を提供できますか?

4

0 に答える 0