我正在尝试为一个采用IQueryable集合的方法编写单元测试。
在将其传递给测试方法之前,我应该如何在单元测试中实例化集合?这是我的测试中的默认代码
IQueryable<Item> Items = null; // TODO: Initialize to an appropriate value
以下是我尝试写的内容
IQueryable<Item> Items = new IQueryable<Item>; // TODO: Initialize to an appropriate value
我是否犯了男生错误?
答案 0 :(得分:16)
好吧,你可以在任何类型的集合/列表/数组上使用.AsQueryable()
,但是 的IMO不能 对此进行单元测试,因为不同的查询提供程序支持不同的选项/方法。您只能对此进行集成测试。任何单元测试(尤其是使用对象的单元测试)都很少或根本不能证明您的系统。
答案 1 :(得分:2)
IQueryable似乎是一个接口(http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx),您是否应该尝试实例化一个实现此接口的类(或者可能使用模拟对象进行测试)?
答案 2 :(得分:0)
最好的方法是使用一种模式,让您测试数据库中的IQueryable响应,例如Unit of work and repository pattern
创建用于单元测试的模拟存储库的最佳方法是使用memory repository,但您也可以使用Moq或任何其他虚假存储库。