0

我想在 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\"}"
}
4

1 回答 1

0

您可以使用包含(在此示例中非常粗略)正则表达式的“匹配”谓词来捕获任何字符串输入并返回 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"
            }
          }
        }
      ]
    }
  ]

或者,您还可以在 imposter 声明中指定默认响应代码 400,以便任何与特定谓词不匹配的内容默认返回 400 响应:

{
  "port": "22001",
  "protocol": "http",
  "name": "login_user",
  "defaultResponse": {
      "statusCode": 400
  },
  "stubs": [
    {
.... snip ....
于 2020-02-07T13:03:40.250 回答