web-services - 如何从 Karate 将响应值传递给 Java API

标签 web-services testing automation karate

如何将值从 Karate API 传递到 Java 类?

如文档中所述,我使用以下代码片段从 Java API 获取响应。但它会返回未格式化的 JSON 内容的响应。

Map<String, Object> result = CucumberRunner.runClasspathFeature("demo/java/from-java.feature", args, true);

然后,我使用以下脚本打印响应。

for(Map.Entry<String , Object> entry: getMbrWksMembershipDetailsResponse.entrySet())
{
    if (entry.getKey().equalsIgnoreCase("response"))
    {
        System.out.println(entry.getValue());
    }
}

它显示为,

{soap:Envelope={_={soap:Body={ns1:getMbrWksMembershipDetailsResponse={_={ns4:WksMembershipSummaryResponse={_={ns2:customerSummary={ns2:address={ns2:city=SOUTH CHESTERFIELD, ns2:country=USA, ns2:isoCountryCode=US, ns2:line1=9998, N. MICHIGAN ROAD., ns2:postalCode=23834, ns2:state=VA}, ns2:allowPasswordChange=true, ns2:arpMember=false, ns2:brandCode=RCI, ns2:brandId=1, ns2:companyCode=RCI, ns2:eliteMemberRewardStatus=false, ns2:eliteRewardStatus=true, ns2:europePointsClubMember=false, ns2:firstName=FRANK, ns2:homePhone=804/733-3004, ns2:isoCurrencyCode=USD, ns2:isoLanguageCode=EN, ns2:language=EN, ns2:lastName=BROWNING B, ns2:locale=en_US, ns2:memberDeveloperRenewed=false, ns2:memberEnrolledDate=2009-10-26T00:00:00-04:00, ns2:memberEnrolledForDirectDebit=false, ns2:memberEnrolledForPltDirectDebit=false, ns2:memberStatus=A, ns2:middleName=B, ns2:msgTranslationLanguageCode=EN, ns2:officePhone=0/-0, ns2:pointsCurrencyCode=0......

因此根据 Map 中的字段/标签拆分数据并不困难。

请建议从 Java API 获取值字段 wize/tag 的最佳选择是什么。

谢谢。

最佳答案

是的,XML 在内部被保存为一个奇怪的 Map 结构,请参阅 type-conversion 上的部分了解更多。

你有一个简单的方法来做到这一点。只需定义一个新变量,即转换为字符串的 response

* xmlstring responseXml = response

在此之后,您只需从 Java API 返回的 Map 中获取 responseXml,这将是一个字符串。

注意:除非您真的试图将 Karate 与其他东西混合,否则不要使用 Java API。 Karate 的全部要点是避免使用 Java 来测试 JSON 和 XML 网络服务。

关于web-services - 如何从 Karate 将响应值传递给 Java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48058682/

相关文章:

javascript - Protractor 页面对象 - 未调用方法

python - 开发python包的正确方法

angularjs - 元素不可见错误: Cannot click on element-error in Protractor IE browser

web-services - 如何通过主干验证和使用外部 api?

c++ - gsoap 中的重大更改(将版本从 2.8.8 更新到 2.8.16)

c - 如果有任何未发现的错误,如何测试字数统计程序?

python - 我想使用 TOTP 将我的响应发送到 API?

.net - 不带 ActiveX 的 Internet Explorer 自动化

wcf - ASP.net Web 服务与 WCF

web-services - 从网站到 Web 应用程序的 Web 服务消费