单元测试IQueryable

时间:2011-07-06 16:25:59

标签: .net unit-testing generics collections iqueryable

我正在尝试为一个采用IQueryable集合的方法编写单元测试。

在将其传递给测试方法之前,我应该如何在单元测试中实例化集合?这是我的测试中的默认代码

IQueryable<Item> Items = null; // TODO: Initialize to an appropriate value

以下是我尝试写的内容

IQueryable<Item> Items = new IQueryable<Item>; // TODO: Initialize to an appropriate value

我是否犯了男生错误?

3 个答案:

答案 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或任何其他虚假存储库。