В моем проекте я следую схеме репозитория. Мои репозитории разговаривают с уровнем сдерживания, и я использую Entity Framework в качестве ORM.Единичные репозитории тестирования
В настоящее время, в моих модульных тестах, я кодирую непосредственно против уровня сохранения, и в результате любой тест выполняется непосредственно против БД. Итак, если я тестирую для вставки, он фактически вставляет данные в базу данных.
Я хочу знать, как я могу протестировать, не беспокоясь о том, чтобы изменить базу данных?
Есть ли способ, который я могу сделать в области тестирования базы данных?
Благодаря
Я создал схему базы данных, подобную реальной один в моем App_Data, а затем я попытался его реализации, как это -
[TestInitialize]
public void TestInitialize()
{
//TODO: in TestCleanup, do a rollback to revert any changes performed during the test.
Database.SetInitializer<LogViewerDbContextFake>(new LogViewerInitializer());
}
[TestMethod]
public void Get_Should_Return_List_Of_Applications()
{
// Arrange
LogViewerDbContext testDbContext = new LogViewerDbContextFake();
ApplicationRepository sut = new ApplicationRepositoryImpl(testDbContext);
// Act
List<string> failure = sut.Get();
// Assert
Assert.AreEqual(4, failure.Count);
}
internal class LogViewerInitializer : DropCreateDatabaseIfModelChanges<LogViewerDbContextFake>
{
protected override void Seed(LogViewerDbContextFake context)
{
List<LogEntry> logEntries = new List<LogEntry>()
{
new LogEntry{
Id = 1,
Application = "Application 1"
},
new LogEntry{
Id = 2,
Application = "Application 2"
},
new LogEntry{
Id = 3,
Application = "Application 3"
},
new LogEntry{
Id = 4,
Application = "Application 4"
},
new LogEntry{
Id = 5,
Application = "Application 2"
},
new LogEntry{
Id = 6,
Application = "Application 2"
}
};
logEntries.ForEach(s => context.LogEntries.Add(s));
context.SaveChanges();
}
}
Даже если тест побежал и прошел, LogViewerInitializer не вставили какой-либо записи в App_Data \ Database. Итак, мне было интересно, какова логика и как именно происходит выполнение?
Настройка базы данных тестирования. – Ryan