【发布时间】:2011-10-22 22:33:32
【问题描述】:
我想模拟 Find 方法,它需要使用 Moq 的谓词:
public PurchaseOrder FindPurchaseOrderByOrderNumber(string purchaseOrderNumber)
{
return purchaseOrderRepository.Find(s => s.PurchaseOrderNumber == purchaseOrderNumber).FirstOrDefault();
}
我的存储库方法
IList<TEntity> Find(Func<TEntity, bool> where);
我使用了以下测试方法
[TestMethod]
public void CanGetPurchaseOrderByPurchaseOrderNumber()
{
_purchaseOrderMockRepository.Setup(s => s.Find(It.IsAny<Func<PurchaseOrder, bool>>()).FirstOrDefault())
.Returns((Func<PurchaseOrder, bool> expr) => FakeFactory.GetPurchaseOrder());
_purchaseOrderService.FindPurchaseOrderByOrderNumber("1111");
}
它给了我以下错误:
ServicesTest.PurchaseOrderServiceTest.CanGetPurchaseOrderByPurchaseOrderNumber 抛出异常: System.NotSupportedException:表达式引用了不属于模拟对象的方法:s => s.Find(It.IsAny()).FirstOrDefault
我该如何解决这个问题?
【问题讨论】: