統合テスト用にデータベース (エンティティ フレームワーク) を変更して、データベースにテスト レコードを作成し、テストが完了したらすべてを破棄することはできますか?
現在、ローカル開発に使用するデータベースを汚染しています。
PS: これはかなり基本的なものに違いないことに気付きましたが、何らかの理由でこれに関するドキュメントを見つけることができません。
統合テスト用にデータベース (エンティティ フレームワーク) を変更して、データベースにテスト レコードを作成し、テストが完了したらすべてを破棄することはできますか?
現在、ローカル開発に使用するデータベースを汚染しています。
PS: これはかなり基本的なものに違いないことに気付きましたが、何らかの理由でこれに関するドキュメントを見つけることができません。
これを実現する 1 つの方法は、各テストに対して明示的に、または setup メソッドで、 TransactionScopeブロックで各テストをラップすることです。スコープがコミットされていない場合、変更はロールバックされます。ここに例があります。
探していたものが見つかりました。データベース名を変更するだけで、思ったよりも簡単です。名前を使用して DbContext を作成するだけで、データベース名を変更できます。
new ApplicationContext("TestDatabase")
ApplicationContext の実装:
public class ApplicationContext : DbContext, IDbContext
{
public ApplicationContext()
{
}
public ApplicationContext(string databaseName) : base(databaseName)
{
}
}
テストの実行 テストに使用できる別のデータベースを作成しました。