问题描述
我尝试了他们的文档,但这非常“基础”,因此希望这里的人可以发现我的问题?我得到2个谓词,一个谓词使用错误的用户,一个谓词使用正确的用户。
用户的base64是通过post-body发送的,但是Mountebank的contains
似乎只是忽略了它,而是选择了一个包含另一个包含值的谓词……为什么?
我的请求与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","contains": {
"body": "{\"auth\":\"dXNlcjpmYWxzY2g=\""
}
}],"responses": [{
"is": {
"statusCode": 401,"body": {}
}
}
}]
}
我的语法错误吗?它与第一个谓词匹配,即使它不包含dXNlcjpmYWxzY2g=
它确实可以使用equals
起作用,我很好奇为什么contains
不是这样。
解决方法
诀窍似乎是使用and
,这很奇怪,但是解决方案是:
"predicates": [{
"and": [
{ "equals": { "method": "POST","path": "/new" }},{ "contains": { "body": "{\"auth\":\"dXNlcjpyaWNodGln\"" }}
]
}],