在Karate DSL中,如何解析有效POST请求的不支持的媒体类型

时间:2017-10-19 21:48:08

标签: rest http http-status-codes karate

所以我使用空手道中的功能创建了动态POST请求。我手动测试了新创建的请求,它确实返回了200.但是,当通过Karate运行请求时,我得到415不支持的媒体类型。

POST REQUEST:

{
  "content": [
    {
      "assetId": "273108817",
      "country" : "US",
      "sourceSystemCode" : "GE_Clarify",
      "serviceRequestCode" : "Karate-Insert: 157264280",
      "serviceRequestTypeCode" : "servicerequestcorrective",
      "serviceRequestStatusCode" : "Started",
      "requester" : "Karate,DSL",
      "problem" : "Submitted Using Karate",
      "submissionTimestamp" : null,
      "sourceUpdateDate": "2017-09-13T15:53:51.597Z",
      "completionDate" : null,
      "dueDate" : null,
      "availabilityDate" : null,
      "remotely" : "0",
      "assetAvailability" : "Up",
      "facilityCode" : "US_294629"
    }
  ]
}

空手道语法

场景:提交新的服务请求POST:

  • def ServiceRequestPostTemplate = read(' classpath:testsuite / testdata / ServiceRequestServiceTemplate.json')     *替换ServiceRequestPostTemplate                 |令牌|价值|                 | assetId | assetTblAssetId |                 |国家|国家|                 | sourceSystemCode | sourceSystemCode |                 | serviceRequestCode | '空手道插入:' + NewServiceRequestCode |

    给定路径' serviceRequests /' 并请求ServiceRequestPostTemplate

    • 标题授权='承载' +令牌 方法发布时 然后状态200

以下附件中的错误消息。注意,我通过Swagger UI手动检查了请求,一切正常。我也把它作为空手道中的硬编码变量传递给它并且它运行良好。但是,关于使用'表格'功能似乎改变了媒体类型。

enter image description here

2 个答案:

答案 0 :(得分:2)

您还需要使用标题关键字添加内容类型,如下所示

给出路​​径'some / path'

请求{some:'data'}

标头Accept ='application / json'

方法发布时

然后状态200

希望这有帮助。

答案 1 :(得分:1)

使用replace时,类型将转换为字符串 - 文档中明确提到了这一点。

所以你有两个选择:a)将替换结果类型转换回JSON b)手动设置Content-Type标题。

希望有所帮助!