Как смоделировать метод Expand ODataClient с MSFakes? - PullRequest
0 голосов
/ 18 мая 2018

Я сгенерировал клиента 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), но он ничего не делает.

Есть идеи, как подойти к этой проблеме дальше?

1 Ответ

0 голосов
/ 22 мая 2018

Оказывается, мне также нужно установить метод ExpandString shim для класса System клиента OData, чтобы он возвращал те же данные, что и сам поставщик.

...