Я сгенерировал клиента OData из метаданных Dynamics 365.Я пишу модульные тесты для бизнес-логики и хочу смоделировать REST API с пользовательскими данными.
Ранее я спрашивал, как установить поддельные возвращаемые данные для ODataClient, и нашел ответ на него: Как установить возвращаемое значение объекта MS Fakes?
Все работало нормально, пока мне не пришлось запрашивать вложенные данные с помощью ключевого слова Expand (используя Expand lambda из библиотеки OData ).
Например, этот запрос завершается с NullReferenceException при использовании со сборкой Faked ODataClient:
IQueryable<Insurance> insurancesQuery = from i in _client.Insurances
.Expand(i => i.Account_id)
select i;
Без лямбды Expand все работает, как и ожидалось.
Если я сделаю это:
IQueryable<Insurance> insurancesQuery = from i in _client.Insurances
.Expand("account_id")
select i;
, тогда я получу NullReferenceException
с трассировкой стека:
> at lambda_method(Closure , Ecr_insurance ) at
> System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at
> System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
> at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
Я знаю, что проблема в том, что я не настроил шим илиЗаглушка где-то, но я просто не могу найти правильный метод для замены.Я пытался прочитать исходный код OData, но пока не нашел ничего полезного.
Я пытался установить метод Getter в Аккаунтах (ShimSystem.AccountsGet
), но он ничего не делает.
Есть идеи, как подойти к этой проблеме дальше?