我在我的项目中遵循了保存模式。 我的保存机构与“老板”进行了交谈,我正在利用实体框架作为管理事务办公室。
目前,在我的单位测试中,我直接针对常识层,因此,任何测试都直接针对非行。 因此,如果我测试插入,它实际上将数据输入数据库。
我想知道,我如何检验,而不必担心数据库是否得到修改?
是否有办法进行网上数据库测试?
增 编
我建立了与我“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();
}
}
即使测试已经进行,LogerInitializer也没有在应用数据库中添加任何记录。 因此,我想知道底是什么逻辑,究竟是怎样做?