我们将 C# 和 Linq2SQL 与 MS SQL Server 数据库一起使用。我们有一个 mockdatacontext 来进行一些单元测试。在测试时,我们发现了两种不同的行为,这取决于使用的是“真实”还是“模拟”数据库。
场景一:真实数据库
数据库中有5条记录:
db = realDatabase
db.InsertOnSubmit(new record)
var count1 = db.getTable.Count()
db.SubmitChanges()
var count2 = db.getTable.Count()
计数 1 = 5 计数 2 = 6
场景 2:模拟数据库
数据库中有5条记录:
db= mockDatabase
db.InsertOnSubmit(new record)
var count1 = db.getTable.Count()
db.SubmitChanges()
var count2 = db.getTable.Count()
计数 1 = 6 计数 2 = 6
*“模拟”数据库在调用 SubmitChanges() 之前已经知道新记录,因此它包含在计数中。对于测试,我们需要两种行为相同。
有没有其他人遇到过这个问题,你能提出解决方案吗?