Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何模拟ODataClient';MSFakes的扩展方法?_C#_.net_Dynamics Crm_Microsoft Fakes_Microsoft Odata - Fatal编程技术网

C# 如何模拟ODataClient';MSFakes的扩展方法?

C# 如何模拟ODataClient';MSFakes的扩展方法?,c#,.net,dynamics-crm,microsoft-fakes,microsoft-odata,C#,.net,Dynamics Crm,Microsoft Fakes,Microsoft Odata,我已经从Dynamics 365元数据生成了一个OData客户端。我正在为业务逻辑编写单元测试,我想用自定义数据模拟RESTAPI 之前我问过如何为ODataClient设置假返回数据,我找到了答案: 在我不得不使用Expand关键字(使用)查询嵌套数据之前,一切都很顺利 例如,当与伪造的ODataClient程序集一起使用时,此查询因NullReferenceException而失败: IQueryable<Insurance> insurancesQuery = from i i

我已经从Dynamics 365元数据生成了一个OData客户端。我正在为业务逻辑编写单元测试,我想用自定义数据模拟RESTAPI

之前我问过如何为ODataClient设置假返回数据,我找到了答案:

在我不得不使用Expand关键字(使用)查询嵌套数据之前,一切都很顺利

例如,当与伪造的ODataClient程序集一起使用时,此查询因NullReferenceException而失败:

IQueryable<Insurance> insurancesQuery = from i in _client.Insurances
.Expand(i => i.Account_id)
select i;
我知道问题是我没有在某处设置垫片或短棒,但我就是找不到正确的方法来替换。我试图阅读OData源代码,但还没有发现任何有用的东西

我试图设置帐户的Getter方法(
ShimSystem.AccountsGet
),但它没有做任何事情


有没有办法进一步解决这个问题?

事实证明,我还必须在OData客户端的
系统
类上设置
ExpandString
shim方法,以返回与提供者本身相同的数据

IQueryable<Insurance> insurancesQuery = from i in _client.Insurances
.Expand("account_id")
select i;
> 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)