如何基于gsoap反序列化实现Web服务输出的单元测试验证?
Validating gSOAP Web Service Output with Unit Tests
如果你在用gSOAP开发Web服务,大概率会碰到这个问题:默认情况下(out of the box),gSOAP并没有提供现成的输出验证机制——没法保证发送给客户端的对象序列化后完全符合Schema的有效性要求。我们之前就踩过这类验证的坑,所以专门设计了一套用单元测试来验证Web服务输出的方案,具体思路如下:
- 先利用gSOAP生成的C++映射类型,构建任意结构的对象树,把它传入一个通用处理函数
- 在函数里第一步调用
T::soap_put()方法完成对象的序列化,得到对应的字符串 - 紧接着把这个序列化后的字符串传入
T::soap_get()方法进行反序列化 - 通过这个「序列化→反序列化」的往返过程来验证输出有效性:如果反序列化能正常完成,且得到的对象和原对象结构、内容一致,就说明序列化输出是符合Schema规范的
内容的提问来源于stack exchange,提问作者wnrph
相关产品推荐
相关产品推荐

