我有以下代码:
45 var listMock = Substitute.For<List<EntityTestObject>>();
46 listMock.Where(Arg.Any<Func<EntityTestObject, bool>>()).Returns(Something);
但我收到以下错误:
System.ArgumentNullException
:值不能为空。
参数名称:谓词
在System.Linq.Enumerable.Where[TSource](IEnumerable'1 source, Func'2 predicate)
在第46行。
但是,不带func<>
个参数的方法(例如Any())不会失败。
我的问题是:
答案 0 :(得分:3)
NSubstitute不能模拟像Enumerable.Where<T>
这样的扩展方法。对于List
的情况,我建议不要嘲笑它。使用真实列表并添加测试所需的项目,以便真正的Where(..)
扩展方法将过滤项目并提供所需的项目。