Я новый moq и боролся со следующим.
Я смоделировал список List с именем _mockedThingsList
Я хотел бы, чтобы Moq FindBy моего IRepository возвратился из этого списка mocks на основе запроса linq, предоставленного в моем сервисе, которыйпроверяется
То, что у меня сейчас есть, выдает исключение и выглядит следующим образом.Что не так, пожалуйста?
mock.Setup(moq => moq.FindBy(It.IsAny<Func<IThing, bool>>()))
.Returns((enumThingType tp) => _mockedThingsList.Where(x => x.ThingType == tp));
Интерфейс хранилища выглядит следующим образом:
interface IRepository<T>
{
IEnumerable<T> FindAll();
IEnumerable<T> FindBy(Func<T, bool> predicate);
void Add(T item);
void Remove(T item);
bool Contains(T item);
int Count { get; }
}
И сервис, который будет проверен с этим макетом
class ThingService
{
private readonly IRepository<IThing> _repository;
public ThingService(IRepository<IThing> repository)
{
_repository = repository;
}
public List<IThing> GetThings1()
{
return _repository.FindBy(y => y.ThingType == enumThingType.WhatEver).ToList();
}
public List<IThing> GetThings2()
{
return _repository.FindBy(y => y.Name == "What ever").ToList();
}
}