如何解决使用Karate测试Hessian RPC请求的最佳实践
我们已经成功地使用空手道来自动化REST和SOAP Web服务的测试。此外,我们还有一些基于Hessian Web服务协议(http://hessian.caucho.com/)的旧版Web服务。
Hessian调用也是HTTP请求,因此我们希望将它们添加到我们的空手道测试套件中。
我的第一个尝试是使用Java Interop功能,因此将测试实现为Java代码,并在Feature文件中调用java类。
示例:
Scenario: Test offer purchase order
* def OfferPurchaseClient = Java.type('com.xyz.OfferPurchaseClient')
* def orderId = OfferPurchaseClient.createOrder('12345','xyz','max.mustermann@test.de')
* match orderId == '#number'
这种方法有效,但是我想知道是否还有一种更优雅的方法,该方法还可以使用空手道DSL的更多功能。
我正在考虑这样的东西(虚拟代码):
Scenario: Test offer purchase order
Given url orderManagementEndpoint
And path offerPurchase
And request serializeHessian(offerPurchase.json)
When method post
Then status 200
And match deserializeHessian(response).orderId == '#number'
解决方法
我实际上认为您已经在使用Java互操作方法的正确道路上。在我看来,HTTP客户端只是Karate功能的一小部分子集,还有很多其他方面,例如断言,报告,并行执行,甚至是负载测试等。因此,我不必担心使用request
,method
,status
等
也许OfferPurchaseClient.createOrder()
可以返回JSON。
或者我会考虑使用OfferPurchaseClient.request(Map<String,Object> payload)
之类的方法-其中payload
可以包含所有参数,包括路径和预期的响应代码等。
换句话说,我建议您围绕一些Java代码编写自己的微型框架和自定义DSL。如果您需要灵感和想法,请查看此讨论,它是围绕Karate构建CLI测试工具的示例:https://stackoverflow.com/a/62911366/143475
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。