c# – 是否可以(使用Moq)使用Lambda参数进行存根方法调用?
发布时间:2020-12-15 04:12:15 所属栏目:百科 来源:网络整理
导读:如果我这样做: var repository = new MockIRepositoryBanner();repository.Setup(x = x.Where(banner = banner.Is.AvailableForFrontend())).Returns(list); “Where”是我的存储库中采用Func T,ISpecification T的方法. AvailableForFrontend返回ISpecific
如果我这样做:
var repository = new Mock<IRepository<Banner>>(); repository.Setup(x => x.Where(banner => banner.Is.AvailableForFrontend())).Returns(list); “Where”是我的存储库中采用Func< T,ISpecification< T>的方法. AvailableForFrontend返回ISpecification的实现,list是存储库的泛型类型的IEnumberable. 它编译得很好,但是当我运行测试时出现以下错误. ---- System.NotSupportedException : Expression banner => Convert((banner.Is.AvailableForFrontend() & banner.Is.SmallMediaBanner())) is not supported. 如果我在直接接受ISpecification的存储库中使用Where的其他重载,则没有问题. 所以我的新手模拟/ Moq问题是:我可以使用lamdba作为参数存根方法调用吗?或者我应该以另一种方式解决这个问题? 解决方法
你尝试过以下语法:
repository.Setup(x => x.Where(It.IsAny<Func<T,ISpecification<T>>()).Returns(list); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 一名系统管理员被指控用逻辑炸弹破坏前雇主的Oracle数据库!
- XML ANNOTATION 转自http://www.blogjava.net/hoojo/archiv
- c# – 元数据集合中已存在具有标识“Id”的项目.参数名称:
- 证卷指数追踪 - 迈出构建投资理财辅助平台的第一步
- 如何将C代码编译成Swift Framework
- cocos2d js 给sprite增加按钮点击事件
- Flex获取同一台电脑上多个USB摄像头
- XML文件中element.getText()和element.getTextNormalize()的
- c# – WPF:在ListView中添加项目时提高事件
- Flex4 自定义DateField 带时分秒