【问题标题】:Karate - missing double quotes in the response of Runner.runFeature()空手道 - Runner.runFeature() 的响应中缺少双引号
【发布时间】:2020-05-13 16:59:16
【问题描述】:

我试图在 Runner.runFeature() 执行后在 java 中获得响应,但是从某些实体中删除了双引号。

调用的功能文件正在读取外部 json 文件。 然后在空手道中动态更改值并进行发布。

在输出中我看到文件有双引号。 但是在执行后,当我在响应映射中看到某些对象上的双引号被删除时。

初始 json 文件(sample.json):

{"d":{"ChangeRequestType":"AAA","AdditionalInformation":"bla","RequestReason":"test BP creation","BusinessPartner":{"BPCategory":"2","Description":"BLA","CentralData":{"Name1":"NYJKPEFB0818GR4","Name2":"NYJKPEFB0818GR4","NameOrg1":"LM60Q9ZBBXM4SHXWNJZK","NameOrg2":"LM60Q9ZBBXM4SHXWNJZK"},"TaxNumbers":[{"TaxNumberCategory":"XYZ","TaxNumberProperty":"999"}],"IdentificationNumbers":[{"IdentificationType":"BLA01","IDNumber":"123"}],"BankDetails":[{"BankdetailsID":"0001","BankNumber":"210","BankAccount":"12344","BankCountry":"DE","BankAccountName":"Hardcoded bank account"}],"Addresses":[{"AddressType":"1","PhysicalAddresses":[{"HouseNumber":"40","City":"Berlin","PostalCode":"1333","CountryKey":"DE","Street":"BLA"}]}]}}}

特征文件,读取外部json文件:

    * def entityCreate = read('..//utils/sample.json')


  Scenario:Post
  ------------------------------------------------------------------------------------------------------------

  Creating unique BusinessPartner
    Given url uri
    And request entityCreate
    When method post
    Then status 201 

从 JAVA 类调用功能文件:

  Map<String, Object> resultCreate = Runner.runFeature(getClass(), "/../odata/businesspartner/businessPartnerCreateTest.feature", null, true);

从 Runner 获取结果的结果:

 System.out.println(resultCreate.get("entityCreate").toString());

结果:

{d={ChangeRequestType=AAA, AdditionalInformation=bla, RequestReason=test BP creation, BusinessPartner={BPCategory=2, Description=BLA, CentralData={Name1=NYJKPEFB0818GR4, Name2=NYJKPEFB0818GR4, NameOrg1=LM60Q9ZBBXM4SHXWNJZK, NameOrg2=LM60Q9ZBBXM4SHXWNJZK}, TaxNumbers=[{"TaxNumberCategory":"ABC","TaxNumberProperty":"123"}], IdentificationNumbers=[{"IdentificationType":"ABC","IDNumber":"1234"}], BankDetails=[{"BankdetailsID":"0001","BankNumber":"210","BankAccount":"12345","BankCountry":"DE","BankAccountName":"Hardcoded bank account"}], Addresses=[{"AddressType":"1","PhysicalAddresses":[{"HouseNumber":"40","City":"Berlin","PostalCode":"1333","CountryKey":"DE","Street":"BLA"}]}]}}}

一些 " " 被移除,一些仍然存在。

感谢任何帮助,我迷路了,很可能犯了愚蠢的错误。

【问题讨论】:

  • @Peter Thomas - 我可以在将值覆盖到原始字符串后复制有效负载吗?

标签: java karate


【解决方案1】:

您很可能正在打印字符串连接,在幕后 JSON 可能没问题:https://github.com/intuit/karate#print

否则,无法从您提供的内容中分辨出来。也许你应该遵循这个过程:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

【讨论】:

  • 我添加了更多细节 - 我希望能够解释更多...
  • @PePe 不,这对我来说太复杂了:stackoverflow.com/help/mcve
  • 我尽量做到最小 - 它看起来像 Runner 正在解析这个特定的 JSON 结构并从中删除 "。请求被正确创建等。我正在尝试获取对 JAVA 的请求但我总是把它“损坏”。
  • 或以错误的方式解析它... entityCreate=[type: MAP, value: {ChangeRequestType=AAA, AdditionalInformation=bla RequestReason=For test purpose, BusinessPartner={BPCategory=2, Description=bla, CentralData={Name1=test API, NameOrg1=Organisation}, Addresses=[{"AddressType":"1","PhysicalAddresses":[{"CountryKey":"DE"}]}]}}] 来自对象映射的值。那么我可以将纯文本/请求字符串传递给 Java 吗?
  • 好吧,我自己回答了——我想昨天已经很晚了。我只是用 * string = entityCreate - 哈哈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 2011-08-19
  • 1970-01-01
  • 2020-09-29
  • 2022-10-12
  • 1970-01-01
  • 2022-10-21
相关资源
最近更新 更多