gpt4 book ai didi

c# WCF 测试 EntityDescriptor

转载 作者:行者123 更新时间:2023-11-30 12:23:08 25 4
gpt4 key购买 nike

我有一个 WCF 客户端,我在其中通过 OData 获取数据。我想对我的客户端进行单元测试,并且已经为 DataServiceContext 创建了一个接口(interface):

internal interface ODataServiceContext
{

DataServiceResponse SaveChanges(SaveChangesOptions options);

ReadOnlyCollection<LinkDescriptor> Links { get; }

...

}

对于我目前的测试,我需要伪造 Links 属性。我需要返回至少一个 LinkDescriptor。有人知道如何实现这一目标吗?

现在我使用 NSubstitute 伪造界面:

var context = Substitute.For<ODataServiceContext>();
var list = new List<LinkDescriptor>();
var links = new ReadOnlyCollection<LinkDescriptor>(list);
context.Links.Returns(links);

这适用于针对空的 Links 属性进行测试。但是,由于类 LinkDescriptor 没有公共(public)构造函数并且是密封的,我如何才能将链接描述符添加到集合中呢?

最佳答案

最后,我通过反射调用了 LinkDescriptor 类的非公共(public)构造函数:

var constructors = typeof(LinkDescriptor).GetConstructors(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
var descriptor = constructors[1].Invoke(new object[] { null, propertyName, null, entityState }) as LinkDescriptor;

看起来,构造函数的四个参数是:

  • 对象来源:来源实体
  • string sourceProperty:源实体的导航属性
  • 对象目标:目标实体
  • EntityStates 状态:链接的状态

关于c# WCF 测试 EntityDescriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38049959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com