如何使用 MSFakes 模拟 ODataClient 的 Expand 方法?
How to mock ODataClient's Expand method with MSFakes?
我已经从 Dynamics 365 元数据生成了一个 OData 客户端。我正在为业务逻辑编写单元测试,我想用自定义数据模拟 REST API。
之前我问过如何为 ODataClient 设置假 return 数据,我找到了答案:
一切正常,直到我不得不使用 Expand 关键字查询嵌套数据(使用 Expand lambda from the OData Library)。
例如,当与伪造的 ODataClient 程序集一起使用时,此查询失败并出现 NullReferenceException:
IQueryable<Insurance> insurancesQuery = from i in _client.Insurances
.Expand(i => i.Account_id)
select i;
没有 Expand lambda,一切都按预期工作。
如果我这样做:
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
) 的 Getter 方法,但它没有任何作用。
有什么想法可以进一步解决这个问题吗?
事实证明,我还必须将 OData 客户端 System
class 上的 ExpandString
垫片方法设置为 return 与提供程序本身相同的数据。
我已经从 Dynamics 365 元数据生成了一个 OData 客户端。我正在为业务逻辑编写单元测试,我想用自定义数据模拟 REST API。
之前我问过如何为 ODataClient 设置假 return 数据,我找到了答案:
一切正常,直到我不得不使用 Expand 关键字查询嵌套数据(使用 Expand lambda from the OData Library)。
例如,当与伪造的 ODataClient 程序集一起使用时,此查询失败并出现 NullReferenceException:
IQueryable<Insurance> insurancesQuery = from i in _client.Insurances
.Expand(i => i.Account_id)
select i;
没有 Expand lambda,一切都按预期工作。
如果我这样做:
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
) 的 Getter 方法,但它没有任何作用。
有什么想法可以进一步解决这个问题吗?
事实证明,我还必须将 OData 客户端 System
class 上的 ExpandString
垫片方法设置为 return 与提供程序本身相同的数据。