我被要求为某些功能编写一些单元测试,但坦率地说,我不太确定这样做的必要性或有用性对于这段特定的代码。 我绝不会质疑一般单元测试的必要性或有用性。
有问题的代码非常简单,并且被大量使用。基本上它是 .Skip() 和 .Take() 扩展方法的包装器。在我看来,整个方法的合法性值得怀疑。
代码基本上是这样的:
public IQueryable<T> Page(IQueryable<T> query, int page, int size)
{
if(query == null) throw new ArgumentNullException("query");
if(page < 0) throw new ArgumentOutOfRangeException("page");
if(page < 0) throw new ArgumentOutOfRangeException("size");
return query.Skip(page * size).Take(size);
}
当然我可以对预期的异常进行单元测试,但还有什么?很可能是我没捕获重点,这是怎么回事?
最佳答案
您可以通过调用AsQueryable
提交一个静态集合。
List<T> dummyData = new List<T>();
//Add data
var result = Page(dummyData.AsQueryable(), 0, 10);
//Perform assertions on result.
如果您实际上只是想测试您的分页是否正常工作。
关于c# - 使用 IQueryable 的单元测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13686286/