我有这个从 Internet 下载的 IEnumerable 扩展方法,我正在努力编写一个有效的回顾性测试
扩展方法
public static bool In<T>(this T source, params T[] list) where T : IEnumerable
{
if (source == null) throw new ArgumentNullException("source");
return list.Contains(source);
}
测试
[TestMethod]
public void In()
{
IEnumerable<int> search = new int[] { 0 };
IEnumerable<int> found = new int[] { 0, 0, 1, 2, 3 };
IEnumerable<int> notFound = new int[] { 1, 5, 6, 7, 8 };
Assert.IsTrue(search.In(found));
Assert.IsFalse(search.In(notFound));
}
结果
所有代码都可以编译,但在两个断言中,当我相信第一个断言search.In(found)
应该返回 true 时,扩展方法的结果返回 false。
问题
我在调用代码中做错了什么还是扩展有问题?