【问题标题】:Soap ui testing with mixed attribute order具有混合属性顺序的肥皂 ui 测试
【发布时间】:2015-02-05 10:47:01
【问题描述】:

我有一个 WCF Web 服务并使用soap ui 进行测试。当我创建新请求时 soap ui按字母顺序显示元素,测试结果成功。

   <v1:subscriberInput>
     <ipAddress>127.0.0.1</ipAddress>
     <operatorCode>3</operatorCode>
     <pageNo>1</pageNo>
     <password>passwordhere</password>     
     <username>userhere</username>
  </v1:subscriberInput>

如果我在 SOAP-UI 中手动混合一些元素顺序,如下所示,一些属性 未设置在对象中。当我调试我的代码时,我看到了 subscriberInput 对象 有一些空值或原始类型有默认值。

 <v1:subscriberInput>
     <password>passwordhere</password>
     <ipAddress>127.0.0.1</ipAddress>         
     <pageNo>1</pageNo>             
     <username>userhere</username>
     <operatorCode>3</operatorCode>
  </v1:subscriberInput>

提前致谢

【问题讨论】:

    标签: .net web-services wcf soap soapui


    【解决方案1】:

    WCF 反序列化中的默认元素顺序是按字母顺序排列的。

    默认情况下,WCF 使用 DataContractSerializator,默认情况下使用元素的字母顺序。

    以下是您的选择

    • 如果您想支持特定顺序的反序列化成员,您可以使用Order property of DataMember attribute

    • 如果您想支持 任意顺序 或元素,您可以编写自己的序列化程序,它会重新组织元素,然后在内部调用 DataContractSerializator。请参阅此 SO question 中的提示。

    【讨论】:

    • 感谢您的回复,但我的问题是关于设置对象的值
    • 未按 WCF 预期顺序出现的元素将被简单地丢弃;这意味着它们将具有默认值。
    • 那么我可以添加特定的顺序来解决问题吗?
    • 是的,你可以。我经常这样做是为了确保特别感兴趣的元素出现在请求/响应的顶部(例如“名称”或“ID”元素)
    • 我指定了元素的顺序,因此 SOAP UI 请求中的顺序发生了变化。我在元素标签中添加了值,但在第二个请求中,如果我更改任何元素的顺序,它就会失败
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    相关资源
    最近更新 更多