2

MongoDB をデータソースとして使用する場合、トランザクションを自動的にロールバックするように Grails 統合テストをどのように構成できますか (すべきですか)? (Grails 2.2.1 + mongodb プラグイン 1.2.0 を使用しています)

4

4 に答える 4

2

spock 統合テストのために、テスト データのクリーンアップをある程度制御できる MongoIntegrationSpec を定義しました。

  • dropDbOnCleanup = true // 機能メソッドが実行されるたびに DB 全体を削除します。
  • dropDbOnCleanupSpec = true // 仕様が完了した後、DB 全体を削除します。
  • dropCollectionsOnCleanup = ["collectionA", "collectionB", ...] // 機能メソッドが実行されるたびにコレクションを削除します。
  • dropCollectionsOnCleanupSpec = ["collectionA", "collectionB", ...] // 仕様の完了後にコレクションを削除します。
  • dropNewCollectionsOnCleanup = true // 各機能メソッドが実行された後、すべての新しいコレクションが削除されます
  • dropNewCollectionsOnCleanupSpec = true // 仕様が完了すると、すべての新しいコレクションが削除されます

ソースはこちら

https://github.com/onetribeyoyo/mtm/tree/dev/src/test/integration/com/onetribeyoyo/util/MongoIntegrationSpec.groovy

また、プロジェクトにはいくつかの使用例もあります。

于 2013-07-23T20:23:12.343 に答える
1

MongoDB はトランザクションをサポートしていないため、それは不可能だと思います。Suggested を使用できますがstatic transactional = 'mongo'、データをフラッシュしなかった場合にのみ役立ちます (まれな状況だと思います)。

setUp()代わりに、データベースを手動でクリーンアップできます。次のように、テストするドメインのコレクションをドロップできます。

MyDomain.collection.drop()

そして(オプションで)テストに必要なすべてのデータを入力します。

于 2013-04-17T16:08:50.380 に答える
0

テストおよび/またはクラスstatic transactional = 'mongo'で使用できます。詳細については、 MongoDB プラグインを参照してください。integrationservice

于 2013-04-17T02:25:19.807 に答える