在空手道 DSL 中,如何为有效的 POST 请求解析不受支持的媒体类型

In Karate DSL, How do I resolve an Unsupported Media Type for a valid POST REQUEST

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

POST 请求:

{
  "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:

下面附件中的错误消息。请注意,我通过 Swagger UI 手动检查了请求,一切正常。我还在 Karate 中将它作为硬编码变量传递进来并且它工作正常。但是,使用 'table' 功能似乎会改变媒体类型。

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

给定路径'some/path'

并请求{一些:'data'}

和header接受='application/json'

当方法post

然后状态200

希望对您有所帮助。

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

因此您有两个选择:a) type-cast 将替换结果返回 JSON b) 手动设置 Content-Type header。

希望对您有所帮助!