0

我尝试了他们的文档,但它非常“基本”,所以希望这里有人能发现我的问题?我有 2 个谓词,一个使用错误的用户,一个使用正确的用户。用户的 base64 是通过 post-body 发送的,但似乎containsMountebank 只是简单地忽略它并选择一个包含另一个包含值的谓词......为什么会这样?

我的要求是dX...2g=

"body":"{\"auth\":\"dXNlcjpmYWxzY2g=\"}"

但是 Mountebank 将谓词与 匹配dX...Gln

using predicate match: [{
   "equals":{"method":"POST","path":"/new"},
   "contains":{"body":"{\"auth\":\"dXNlcjpyaWNodGln\""}
}]

包含不匹配,并且仍然使用该谓词,即使我的存根确实包含匹配的谓词,但它没有被使用:

{
  "path": "/new",
  "predicates": [{
    "equals": {
      "method": "POST",
      "path": "/new"
    },
    "contains": {
      "body": "{\"auth\":\"dXNlcjpyaWNodGln\""
    }
  }],
  "responses": [{
    "is": {
      "statusCode": 200,
      "body": {}
      }
    }
  }]
}
,
{
  "path": "/new",
  "predicates": [{
    "equals": {
      "method": "POST",
      "path": "/new"
    },
    "contains": {
      "body": "{\"auth\":\"dXNlcjpmYWxzY2g=\""
    }
  }],
  "responses": [{
    "is": {
      "statusCode": 401,
      "body": {}
      }
    }
  }]
}

我的语法错了吗?它匹配第一个谓词,即使它不包含dXNlcjpmYWxzY2g= It does work using equals,我只是好奇为什么contains不包含。

4

1 回答 1

0

诀窍似乎是 use and,这很奇怪,但解决方案是:

"predicates": [{
  "and": [
    { "equals": { "method": "POST", "path": "/new" }},
    { "contains": { "body": "{\"auth\":\"dXNlcjpyaWNodGln\"" }}
  ]
}],
于 2020-08-11T18:16:20.180 回答