微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Karate测试Hessian RPC请求的最佳实践

如何解决使用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功能的一小部分子集,还有很多其他方面,例如断言,报告,并行执行,甚至是负载测试等。因此,我不必担心使用requestmethodstatus

也许OfferPurchaseClient.createOrder()可以返回JSON。

或者我会考虑使用OfferPurchaseClient.request(Map<String,Object> payload)之类的方法-其中payload可以包含所有参数,包括路径和预期的响应代码等。

换句话说,我建议您围绕一些Java代码编写自己的微型框架和自定义DSL。如果您需要灵感和想法,请查看此讨论,它是围绕Karate构建CLI测试工具的示例:https://stackoverflow.com/a/62911366/143475

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。