6
如果我这样做:是否有可能(通过Moq)使用Lambda参数存根方法调用?
var repository = new Mock<IRepository<Banner>>();
repository.Setup(x => x.Where(banner => banner.Is.AvailableForFrontend())).Returns(list);
“去哪儿”是需要一个Func<T, ISpecification<T>
我仓库里的方法。 AvailableForFrontend返回一个ISpecification的实现,而list是一个存储库通用类型的IEnumberable。
它编译得很好,但是当我运行我的测试时出现以下错误。
---- System.NotSupportedException : Expression banner => Convert((banner.Is.AvailableForFrontend() & banner.Is.SmallMediaBanner())) is not supported.
如果我使用我的另一个重载Where的存储库,直接采用ISpecification,theres没有问题。
所以我的新手模拟/ Moq的问题是:我可以用lamdba作为参数存根方法调用吗?或者我应该以另一种方式来解决这个问题?
+1这是我需要什么。谢谢。 – Luhmann 2010-02-09 13:06:35
验证一个方法是否已经使用特定的lambda表达式作为参数被调用了么? Moq有可能吗? repository.Verify(x => x.Where(banner => banner.Is.AvailableForFrontend())); – 2010-03-22 13:04:03
是的,你可以,如果你指定它可以验证,而设置。 库 .Setup(X => x.Where(It.IsAny>()) .Returns(列表) .Verifiable(); 这里是链接到一个安装验证使用moq的示例: http://dotnet.dzone.com/news/beginning-mocking-moq-3-part-3 –
darthjit
2010-03-22 17:25:46