Как смоделировать метод Expand ODataClient с MSFakes?

Я сгенерировал клиента OData из метаданных Dynamics 365. Я пишу модульные тесты для бизнес-логики и хочу смоделировать REST API с помощью пользовательских данных.

Ранее я спросил, как установить поддельные возвращаемые данные для ODataClient, и нашел ответ на него: как установить возвращаемое значение объекта MS Fakes?

Все работало нормально, пока мне не пришлось запрашивать вложенные данные с помощью ключевого слова Expand (используя лямбду Expand из библиотеки 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)

Я знаю, что проблема в том, что я не установил Shim или Stub где-нибудь, но я просто не могу найти правильный метод для замены. Я пытался прочитать исходный код OData, но пока не нашел ничего полезного.

Я пытался установить метод получения учетных записей (ShimSystem.AccountsGet), но это ничего не делает.

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

1 ответ

Решение

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

Другие вопросы по тегам