You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

独立版MockServer:应在何处设置请求预期?

嗨,我来帮你理清MockServer定义请求预期的几种实用方式,都是官方推荐的方法,你可以根据自己的场景选择:

1. 通过REST API直接配置

这是最灵活的方式,你可以用curl、Postman或者任何HTTP客户端,向MockServer的管理端口(就是你启动时指定的serverPort,这里是1080)发送请求来添加预期规则。

比如你想让MockServer在收到GET /api/user/123请求时,返回一个JSON格式的用户信息,就可以执行这个curl命令:

curl -X PUT "http://localhost:1080/mockserver/expectation" \
-d '{
  "httpRequest": {
    "method": "GET",
    "path": "/api/user/123"
  },
  "httpResponse": {
    "statusCode": 200,
    "body": "{\"id\":123,\"name\":\"John Doe\"}",
    "headers": {
      "Content-Type": ["application/json"]
    }
  }
}'

执行后,MockServer就会记住这个规则:只要匹配到对应的GET请求,就返回你定义的200响应和JSON内容。

2. 使用Java客户端库配置

如果你的测试代码是Java编写的,直接用MockServer的客户端库来定义预期会更方便,能把Mock配置和测试代码整合在一起。

首先在你的Maven项目里添加依赖(对应你用的5.3.0版本):

<dependency>
    <groupId>org.mockserver</groupId>
    <artifactId>mockserver-client-java</artifactId>
    <version>5.3.0</version>
    <scope>test</scope>
</dependency>

然后写一段配置代码,比如定义一个POST请求的响应规则:

import org.mockserver.client.MockServerClient;
import org.mockserver.model.HttpRequest;
import org.mockserver.model.HttpResponse;

public class MockSetup {
    public static void main(String[] args) {
        // 连接到本地1080端口的MockServer
        MockServerClient mockServer = new MockServerClient("localhost", 1080);
        
        // 定义预期:当收到指定的POST请求时,返回创建成功的响应
        mockServer.when(
            HttpRequest.request()
                .withMethod("POST")
                .withPath("/api/user")
                .withBody("{\"name\":\"Jane Doe\"}")
        ).respond(
            HttpResponse.response()
                .withStatusCode(201)
                .withBody("{\"id\":456,\"name\":\"Jane Doe\"}")
                .withHeader("Content-Type", "application/json")
        );
    }
}

运行这段代码后,MockServer就会生效这个规则,后续收到匹配的POST请求就会返回对应的响应。

3. 通过JSON文件批量加载预期

如果有大量的预期规则需要配置,把它们写到JSON文件里批量加载会更高效。

先创建一个expectations.json文件,把所有规则写进去:

[
  {
    "httpRequest": {
      "method": "GET",
      "path": "/api/health"
    },
    "httpResponse": {
      "statusCode": 200,
      "body": "OK"
    }
  },
  {
    "httpRequest": {
      "method": "DELETE",
      "path": "/api/user/123"
    },
    "httpResponse": {
      "statusCode": 204
    }
  }
]

然后启动MockServer的时候,加上-initializationJsonPath参数指定这个文件的路径:

java -jar ./mockserver-netty-5.3.0-jar-with-dependencies.jar \
-serverPort 1080 \
-proxyPort 1090 \
-proxyRemotePort 80 \
-proxyRemoteHost www.mock-server.com \
-initializationJsonPath ./expectations.json

这样MockServer启动后会自动加载文件里的所有预期规则,不用一个个手动配置。

另外要注意:MockServer的预期默认是存在内存里的,重启后就会消失。如果需要持久化,要么每次启动都加载JSON文件,要么在测试代码里用客户端库重新配置一遍。

内容的提问来源于stack exchange,提问作者Rk Ramakrishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:57:29