背景就不赘述了,直接操作 GitHub 上 Star 数还挺高的 MockServer。其官网也详细介绍了 什么是 MockServer
搭建启动
我总是喜欢
docker
搭建服务器,因为确实很方便……
docker-compose.yaml 如下:
version: '2'
services:
mockserver:
image: mockserver/mockserver
container_name: mockserver
ports:
- 1080:1080
environment:
LOG_LEVEL: "DEBUG"
SERVER_PORT: 1080
利用 docker-compose
直接启动一个 MockServer
docker-compose -f docker-compose.yaml
定义接口预期
- 简单的接口定义方法
比如想定义一个登录接口,往/mockserver/expectation
发送PUT
请求,body
至少包含httpRequest
和httpResponse
-
httpRequest
定义接口的请求规则,包含method
path
body
-
httpResponse
定义接口的返回规则,包含statusCode
body
-
curl -v -X PUT "http://localhost:1080/mockserver/expectation" -d '{
"httpRequest" : {
"method": "POST",
"path": "/login",
"body": {
"username": "will",
"password": "myMockServer"
}
},
"httpResponse" : {
"statusCode": 200,
"body" : {
"title": "Login",
"detail": "Login succeed"
}
}
}'
若该请求成功,会返回 201 Created
测试接口
按照定义好的接口规则发送请求
curl -v -X POST "http://localhost:1080/login" -d '{
"username" : "will",
"password" : "myMockServer"
}'
该请求会按照预期返回 200 OK
批量初始化预期接口规则
但实际上如果在测试过程中总是用这种方式添加规则,很不便利,于是 MockServer 提供了 批量初始化的功能。
首先定义一个 json 列表文件,包含所有的接口规则
[
{
"httpRequest" : {
"method": "POST",
"path": "/login",
"body": {
"username": "will",
"password": "myMockServer"
}
},
"httpResponse" : {
"statusCode": 200,
"body" : {
"title": "Login",
"detail": "Login succeed"
}
}
}
]
docker-compose
启动 MockServer 的 YAML 文件配置挂载该文件,并定义 MockServer 的配置环境变量 MOCKSERVER_INITIALIZATION_JSON_PATH
version: '2'
services:
mockserver:
image: mockserver/mockserver
container_name: mockserver
ports:
- 1080:1080
environment:
LOG_LEVEL: "DEBUG"
SERVER_PORT: 1080
MOCKSERVER_INITIALIZATION_JSON_PATH: /config/initializerJson.json
volumes:
- ./initializerJson.json:/config/initializerJson.json
启动成功之后,initializerJson.json 中定义的所有接口规则都已经配置完成。