0
我已经使用了this DistinctBy方法,但我没有将它用作扩展。现在我想为另一个调用这个方法的方法编写单元测试,所以我想设置返回。如何使用Moq模拟/设置IEnumerable输入参数的方法?
的 “DistinctBy” 梅托德
public IEnumerable<TSource> DistinctBy<TSource, TKey>(
IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
初始设置 现在我有这样的事情(我使用Autofac的起订量,Automock功能):
List<Product> listProduct = new List<Product>{ product1, product2 };
mock.Mock<IHelpers>()
.Setup(r => r.DistinctBy<List<BeautyBoutiqueArticle>, int>(It.IsAny<List<BeautyBoutiqueArticle>>(), It.IsAny<Func<List<BeautyBoutiqueArticle>, int>>()))
.Returns(ieList)
.Verifiable();
但它不起作用。它显示像错误:
的最佳重载的方法匹配....有一些非法参数, 和/或参数1:不能从 “System.Collections.Generic.List”转换为 “系统.Collections.Generic.IEnumerable>'
比较遗憾的是,我的方法不是一成不变的。我更新了代码。 此外,IHelpers类包含此方法的接口,所以,我嘲笑该方法的接口。 – DarkJoy
我已经试过类似的东西。该方法返回了几个错误: ---错误\t 7无法根据用法推断方法....的类型参数。尝试明确指定类型参数。 ---错误\t 8类型或命名空间名称“TSource”找不到(是否缺少using指令或程序集引用?)\t ---错误\t 10的类型或命名空间名称TKEY的“无法找到(您是否缺少使用指令或程序集参考?) 您可能知道为什么会发生这种情况? 谢谢 – DarkJoy