我正在使用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)似乎无济于事。
答案 0 :(得分:0)
基于模板的验证可能不是验证场景中消息的最佳方法,因为它总是尝试将alle元素与所有子元素进行比较。
因此,您可能需要改用基于XPath的验证之类的方法。
您还可以结合使用基于模板和XPath的组合,在其中忽略模板中带有@ignore@
的父节点(子节点的数量是动态的)。使用其他XPath表达式,您可以尝试使用XPath验证子代的动态数量。
还可以使用Groovy或验证回调切换到脚本验证。这是在Citrus中验证消息的最强大方法,您可以在其中编写任何代码来满足消息的动态性质。