大佬教程收集整理的这篇文章主要介绍了c# – “模拟”数据库和“真实”数据库行为之间的差异,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
场景1:真实数据库
数据库中有5条记录:
db = realDatabase db.InsertOnSubmit(new record) var count1 = db.getTable.Count() db.SubmitChanges() var count2 = db.getTable.Count()
count1 = 5
count2 = 6
场景2:模拟数据库
数据库中有5条记录:
db= mockDatabase db.InsertOnSubmit(new record) var count1 = db.getTable.Count() db.SubmitChanges() var count2 = db.getTable.Count()
count1 = 6
count2 = 6
*“模拟”数据库在调用SubmitChanges()之前已经知道新记录,因此它包含在计数中.为了测试,我们需要两个行为相同.
如果模拟行为很复杂,您最终会测试模拟而不是业务代码.
// arrange IList<Record> testdata = new List<Record>() {a,b,c}; db = mockRepository.Generatemock<IDatabase>(); db.stub(x => db.getTablE).Return(testdata); // act: call your unit under test // assert db.AssertWasCalled(x => x.InsertOnSubmit(Arg<Record>.Is.Anything)); db.AssertWasCalled(x => x.SubmitChanges());
它每次仍返回相同的列表.在许多情况下,这就足够了.您仍然可以在第二个getTable调用上返回其他数据:
db.stub(x => db.getTablE).Return(testdata1); db.stub(x => db.getTablE).Return(testdata2);
它总是特定于单个测试,但这使它变得如此简单.
编辑:
我不得不承认我不熟悉Linq2sql.在我的例子中被模拟的调用是Linq2sql调用,这可能不容易被嘲笑.您可能需要将其置于简单的DAL界面之后.然后你模拟这个界面.
以上是大佬教程为你收集整理的c# – “模拟”数据库和“真实”数据库行为之间的差异全部内容,希望文章能够帮你解决c# – “模拟”数据库和“真实”数据库行为之间的差异所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。