Как имитировать предикат в функции с помощью Moq

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

Как мне решить эту проблему?

9
задан Liam - Reinstate Monica 17 July 2015 в 08:44
поделиться