Я хочу имитировать метод поиска, который ожидает предиката с использованием 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
Как мне решить эту проблему?