Я работаю с выражением в разделе «Получить сервис» и столкнулся с довольно раздражающей проблемой. Чтобы этот тест работал правильно и служба get возвращала то, что должна, между ними есть переводчик, который берет то, что вы просили, отсылает его и получает то, что вы действительно хотите. Итак, думая, что это было легко, я пытаюсь сделать это ... фальшивый список - это объекты TEntity (переведенные, используемые пользовательским интерфейсом), а TEnterpriseObject - это фактическое сопротивление.
mockGet.Setup(mock => mock.Get(It.IsAny<Expression<Func<TEnterpriseObject, bool>>>())).Returns(
(Expression<Func<TEnterpriseObject, bool>> expression) =>
{
var items = new List<TEnterpriseObject>();
var translator = (IEntityTranslator<TEntity, TEnterpriseObject>) ObjectFactory.GetInstance(typeof (IEntityTranslator<TEntity, TEnterpriseObject>));
fakeList.ForEach(fake => items.Add(translator.ToEnterpriseObject(fake)));
items = items.Where(expression);
var result = new List<TEnterpriseObject>(items);
fakeList.Clear();
result.ForEach(item => translator.ToEntity(item));
return items;
});
Я получаю красный волнистый лист под этими предметами. Где (выражение) - говорит, что его нельзя использовать из-за употребления (путается между <Func<TEnterpriseObject,bool>>
и <Func<TEnterpriseObject,int,bool>>
)
Гораздо более простая версия прекрасно работает ...
mockGet.Setup(mock => mock.Get(It.IsAny<Expression<Func<TEntity, bool>>>())).Returns(
(Expression<Func<TEntity, bool>> expression) => fakeList.AsQueryable().Where(expression));
так что я не уверен, что мне не хватает ... идеи?