代码之家  ›  专栏  ›  技术社区  ›  user1222021

如何测试DataContractSerializer是否被XmlProtoSerializer有效替换?

  •  1
  • user1222021  · 技术社区  · 12 年前

    我有一系列自托管WCF服务(使用 netTcpBinding )我想通过使用 原布夫网 序列化程序。

    我按照 ProtoEndpointBehavior 班 (see here) 。我的测试从一开始就很好,但是,我 非常 怀疑WCF的东西在第一次尝试时运行良好;)

    有没有一种简单的方法可以断言默认值 DataContractSerializer 被替换为 XmlProtoSerializer ?

    我真的很喜欢一个也可以作为单元测试的一部分进行编码的测试。我不希望protobuf网络库因不小心篡改 .config 文件

    1 回复  |  直到 12 年前
        1
  •  3
  •   Ruslan    12 年前

    如果在wcf测试客户端中调用服务,您将看到<原型/>响应正文中的标记 proto call

    如果您将客户端配置为使用protobehavior并使用“无意中禁用的protobuf”调用服务,则由于序列化程序不同,您的答案将为空。你可以在考试中查一下

    var address = new EndpointAddress( url );
    var binding = GetBinding( address.Uri );
    var factory = new ChannelFactory<TService>( binding, address );
    factory.Endpoint.EndpointBehaviors.Add( CreateProtobufEndpointBehavior() );
    var client = factory.CreateChannel();
    var answer = client.GetSomeInt();
    
    AssertAnswerIsNotNull(answer);