過去に、次のようなデータ アクセス/リポジトリ コードを作成するときに、単純な CRUD 操作の単体テストを作成しました。
using(var connection = new WhateverConnection(connectionString))
{
connection.Open();
using(var transaction = connection.BeginTransaction())
{
try
{
//test the CRUD operation
}
finally
{
//gets rid of any stuff created during the test
transaction.Rollback();
}
}
}
今日、私は EF4 Code First をいじっていましたが、このテスト シナリオが Entity Framework レキシコンでどのように変換されるか分からないことに気付きました。を呼び出すと、呼び出されたかどうかに関係なく、DbContext.SaveChanges()
保存してAcceptAllChanges()
コミットするようです。ObjectContext
の代わりに を使用してもDbContext
、作成されたモック/テスト オブジェクトを手動でクリーンアップしないと、この単純なテスト シナリオを再現する方法がわかりません。MSDNでこの記事を読みましたが、実際には型メソッドもTransactionScope
ありません。Rollback
私は使用TransactionScope
し、決して呼び出しませんかComplete
? 単体テスト中にロールバックするために DbContext および/または ObjectContext を使用する別の方法または方法はありますか? EF4 Code First で TDD の考え方を完全に再調整する必要がありますか?