【发布时间】:2010-09-03 19:57:16
【问题描述】:
关于使用数据访问层的单元测试模型对象的另一个“简单”问题。
当我将Table<Customer> 模拟为IQuerable<ICustomer> 时,new List<FakeCustomer>().AsQuerable() 用作内存数据存储中的角色,以下代码完美通过了单元测试:
var filteredCustomers = from c in dal.Customers
where c.Code.ToUpperInvariant() == "ABC"
select c;
当运行应用程序时,我当然会得到NotSupportedException(因为ToUpperInvariant())。也许这是一个相当蹩脚的例子,因为可以通过将ToUpperInvariant() 替换为ToUpper() 来解决问题,但你明白了。
问题:这种不一致是否是编写真实单元而不是集成测试的“费用”?或者我做错了什么,例如应该有另一种方法以完全模拟 Linq To SQL DataContext 的方式模拟 DataContext?
目前我正在排队测试数据库而不是内存模拟来捕获此类错误。
感谢您的建议。
【问题讨论】:
标签: unit-testing linq-to-sql mocking