单元测试IEnumerable中的计数

时间:2015-02-02 04:57:30

标签: c# list ienumerable unit-testing

我正在为我的MVC 5互联网应用程序编写一些单元测试。我有一个返回以下内容的服务类:

IEnumerable<Account>

我正在编写一个单元测试来检查返回的IEnumerable<Account>中的项目数。

由于IEnumerable没有.Count()功能,我该如何检查返回的IEnumerable中的项目数?我应该将此IEnumerable转换为List,然后执行Count吗?是否有更好的方式或更正式的方式来做到这一点?

提前致谢。

1 个答案:

答案 0 :(得分:1)

IEnumerable<T> 确实通过LINQ获得Count()方法。

无论您拨打Count()还是ToList().Count,底线都是相同的:它将枚举整个集合。使用哪种方法并不重要。如果基础集合是ICollection<T>,则例外。在这种情况下,它将跳过枚举整个集合,只返回Count的{​​{1}}属性。

从测试的角度来看,您可能并不关心ICollection返回的数量:您关心正确 {{1 s被退回了。我会相应地重写我的测试。