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

时间:2014-03-27 18:21:48

标签: c# wcf protobuf-net

我有一系列自托管WCF服务(使用netTcpBinding),我希望通过使用梦幻般的 protobuf-net 序列化程序来增强它。

我按照ProtoEndpointBehavior(see here)的文档中的说明,使用自定义行为扩展配置了客户端和服务端点。从第一次尝试开始,我的测试运行良好,但是,我非常怀疑WCF的东西在第一次尝试时运行良好;)

有没有一种简单的方法可以断言默认DataContractSerializerXmlProtoSerializer取代?

我真的很喜欢可以编码为单元测试的一部分的测试。我不希望通过不小心篡改.config文件来无意中禁用protobuf-net库。

1 个答案:

答案 0 :(得分:3)

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

如果您将客户端配置为使用原型行为并使用"无意中禁用的protobuf"来调用服务,则由于序列化程序不同,您的答案将为null。您可以在测试中查看它

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);