AutoFixture カスタマイズを使用して、SQL Compact DB にアクセスするリポジトリをテストしています。
テストが完了したらすぐにこのデータベースを削除していただけると非常に助かります。db はカスタマイズ コンストラクターで作成されるため、削除するのに最適な場所は dispose メソッドであると思います。
私が考えているコードは次のとおりです。
internal class ProjectRepositoryCustomization : ICustomization
{
private readonly String _dbLocation;
public ProjectRepositoryCustomization()
{
var tempDbLocation = Path.Combine(Path.GetTempPath(), "TempDbToDelete");
if (!Directory.Exists(tempDbLocation))
{
Directory.CreateDirectory(tempDbLocation);
}
_dbLocation = Path.Combine(tempDbLocation, Guid.NewGuid().ToString("N") + ".sdf");
}
public void Customize(IFixture fixture)
{
DataContextConfiguration.database = _dbLocation;
var dataContextFactory = new BaseDataContextFactory();
var projRepository = new ProjectRepository(dataContextFactory);
fixture.Register(() => projRepository);
}
public void Dispose()
{
if (File.Exists(_dbLocation))
{
File.Delete(_dbLocation);
}
}
}
同様のことを行うことは可能ですか?