如何在我的SOAP响应中忽略子计数

时间:2019-03-18 15:13:49

标签: soap citrus-framework

我正在使用Citrus Framework 2.8.0在SOAP Web服务上进行一些集成测试。

对于特定操作,子元素的数量可能会有所不同,我目前在某些调用中会收到此错误:

com.consol.citrus.exceptions.TestCaseFailedException: Validation failed: Number of child elements not equal for element 'myResponse', expected '25' but was '21'

我应该如何编写我的receive()SoapActionBuilder来忽略此计数?或者我该如何注释我的响应模板?

soap()
    .client(debolClient)
    .receive()
    .payload(new ClassPathResource("templates/responses/myResponse.xml"))
    .schemaValidation(false);

@ ignore @和receive()。ignore(“ / parent / node)似乎无济于事。

1 个答案:

答案 0 :(得分:0)

基于模板的验证可能不是验证场景中消息的最佳方法,因为它总是尝试将alle元素与所有子元素进行比较。

因此,您可能需要改用基于XPath的验证之类的方法。

您还可以结合使用基于模板和XPath的组合,在其中忽略模板中带有@ignore@的父节点(子节点的数量是动态的)。使用其他XPath表达式,您可以尝试使用XPath验证子代的动态数量。

还可以使用Groovy或验证回调切换到脚本验证。这是在Citrus中验证消息的最强大方法,您可以在其中编写任何代码来满足消息的动态性质。