mountebank的模拟请求配置主要集中在stubs中,这里对stubs配置进行一个集中的说明。
stubs中主要组成是predicates和response,接下来会对这两项进行说明。
predicates
predicate的类型和示例
这里会介绍predicates的断言类型,mountebank提供了多种断言类型对请求进行断言。
equals
判断是否匹配。这个很简单,估计也将是使用率最高的断言。
The request field matches the predicate
deepEquals
深度匹配。当请求字段是对象的时候比较有用。
Performs nested set equality on the request field, useful when the request field is an object (e.g. the query field in http)
contains
请求包含内容。示例
{ "port": 4547, "protocol": "http", "stubs": [ { "responses": [{ "is": { "body": "first" } }], "predicates": [ { "contains": { "body": "first" } }, { "equals" : { "path":"/test" } } ] }, { "responses": [{ "is": { "body": "second" } }], "predicates": [ { "and" : [ { "contains": { "body": "second" } }, { "equals" : { "path":"/test" } } ] } ] }, { "responses": [{ "is": { "body": "third" } }], "predicates": [ { "contains": { "body": "third" } }, { "equals" : { "path":"/test" } } ] } ] }
请求
curl -i -X POST "http://localhost:4547/test" --data "third"
响应
HTTP/1.1 200 OK Connection: close Date: Thu, 01 Mar 2018 02:31:07 GMT Transfer-Encoding: chunked third
startsWith & endsWith
这两个predicates见名知意,以XX开始和以XX结束。
{ "port": 4547, "protocol": "http", "stubs": [ { "responses": [{ "is": { "body": "startswith first" } }], "predicates": [ { "startsWith": { "query": { "first" : "first"} } }, { "equals" : { "path":"/test" } } ] }, { "responses": [{ "is": { "body": "endswith first" } }], "predicates": [ { "endsWith": { "query": { "first" : "first"} } }, { "equals" : { "path":"/test" } } ] } ] }
请求
curl -i -X GET "http://localhost:4547/test?first=firstxxxx"
响应
HTTP/1.1 200 OK Connection: close Date