簡體   English   中英

Mountebank - 如何在 mountebank 的 POST 請求中斷言消息正文是 JSON 格式

[英]Mountebank - How do I assert message body is JSON format in a POST request in mountebank

我想在mountebank的POST請求中存根並檢查消息正文,

{
  "port": "22001",
  "protocol": "http",
  "name": "login_user",
  "stubs": [
    {
      "responses": [
        {
          "is": {
            "statusCode": 201,
            "headers": {
              "Content-Type": "application/json"
            },
            "body": {}
          },
          "_behaviors": {
            "wait": 100
          }
        }
      ],
      "predicates": [
        {
          "equals": {
            "path": "/login_user",
            "method": "POST",
            "headers": {
              "Content-Type": "application/json"
            },
            "body": {
              "name": "Tony",
              "age": "20"
            }
          }
        }
      ]
    }
  ]
}

如果是 JSON 格式的消息正文。 預期響應狀態代碼 200。

例如

{ 
  "body": {
    "name": "Tony",
    "age": "20"
  }
}

如果消息體為 JSON 格式但 JSON 字符串 預期響應狀態代碼 400。

例如

{ 
  "body": "{\"name\": \"Tony\", \"age\": \"20\"}"
}

您可以使用包含(在此示例中非常粗糙)正則表達式的“匹配”謂詞來捕獲任何字符串輸入並返回 400:

  "stubs": [
    {
      "responses": [
        {
          "is": {
            "statusCode": 400,
            "headers": {
              "Content-Type": "application/json"
            },
            "body": {}
          },
          "_behaviors": {
            "wait": 100
          }
        }
      ],
      "predicates": [
        {
          "matches": {
            "path": "/login_user",
            "method": "POST",
            "body": ".*\\\\\\\"name.*"
          }
        }
      ]
    },
    {
      "responses": [
        {
          "is": {
            "statusCode": 201,
            "headers": {
              "Content-Type": "application/json"
            },
            "body": {}
          },
          "_behaviors": {
            "wait": 100
          }
        }
      ],
      "predicates": [
        {
          "equals": {
            "path": "/login_user",
            "method": "POST",
            "headers": {
              "Content-Type": "application/json"
            },
            "body": {
              "name": "Tony",
              "age": "20"
            }
          }
        }
      ]
    }
  ]

或者,您還可以在冒名頂替者聲明中指定默認響應代碼 400,以便任何不匹配特定謂詞的內容默認返回 400 響應:

{
  "port": "22001",
  "protocol": "http",
  "name": "login_user",
  "defaultResponse": {
      "statusCode": 400
  },
  "stubs": [
    {
.... snip ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM