一 工作原理

  1. 请求路径的匹配(request path match)

  2. 返回mock报文的处理

    1. 第一步首先处理${__内建函数}变量替换。例如${__NowDate()} 替换成 1539313200000
    2. 第二步请求header,请求body中的取值替换 。 例如${requestBody.a} 将本次请求的body中的a值获取到并替换。

      例如: 请求的header content-type: application/json,  body 为  {'a':'value'} , 那么 mock response的报文中 ${requestBody.a}  将会替换成  value值
      
    3. 第三步,如果是groovy脚本,则执行groovy脚本。 并将groovy脚本中的response变量的值作为要返回的response值。

    4. 第四步,将response所有的换行符删除。

二 Http Mock规则

Http Mock Rule,定义一个http接口的mock报文。

规则属性

            //groovy
            a='myresponse'
            response=a
    groovy中设置response变量的值就是要返回的值,response的值可以用groovy脚本生成。

操作

  1. 添加

  2. 删除

  3. 修改

  4. 复制添加

匹配规则

  1. 匹配流程

    http mock匹配规则说明 1. 同样的hostName和uri 只能添加一条
    1. hostName 为 时, 即表示可以匹配所有的hostName.
    1. hostName(不为
    ) 和 uri如果 没有匹配到,会尝试匹配hostName为*的规则

    示例如下: 若添加有2条规则 * 第一条规则: hostName:* uri:/hello mockResponse: mock1 * 第二条规则: hostName:testHostName uri:/hello mockResponse: mock2

    • 当访问 http://127.0.0.1/hello 时(通过ip地址访问mock server), 则会匹配第一条规则, 返回报文: mock1.
    • 如果我访问者 http://testHostName/hello 时,会匹配到第二条规则,返回报文:mock2. (testHostName 需要添加hosts或者dns添加record)
    • 再如果我访问 http://testanotherHostName/hello 时, 则会尝试先匹配 hostName=testanotherHostName, uri=/hello 找不到则会寻找
    • hostName=testanotherHostName , uri=/ , 如果再找不到则开始寻找 hostName= , uri=/hello,返回报文: mock1*。

三 Eureka Mock规则

Eureka Mock Rule, 定义如何注册一个eureka服务实例。

规则属性

操作

  1. 添加

  2. 删除

  3. 修改

  4. 复制添加