Moco 1.3.0 发布,模拟服务器
我很高兴地宣布,Moco 1.3.0正式发布了。
Moco是什么?
Moco 是一个可以轻松搭建模拟服务器的框架/工具/程序库。
主要能力
Moco 可以方便地支持 HTTP 模拟服务器的搭建。
- 根据需要,匹配响应的请求,返回相应的应答,配置诸如 HTTP 版本、内容和 HTTP 头等信息。
- 模拟服务器的特殊场景,比如,响应慢。
- 将转发请求至远程服务器,隔离不稳定的服务器。
- 接收请求后异步调用,模拟多级 HTTP 请求的场景。
- 用于单元测试场景,校验请求状况,进行细节验证。
- 提供文件挂载能力,给前端开发提供便利。
更详细的 API,请参考 API。
更多的使用方式,请参考 用法。
版本变更
在 1.3.0 版本中,新增了下面几个 API:
conditional支持用 Java 编写自己的请求匹配器struct支持 JSON 和 XML 请求按结构而非内容进行匹配- 在模板函数
random增加了对于起止范围的支持
此外,还有一些小的修改:
- 修复了在运行时修改配置文件错误导致无法加载的问题。
- 在日志中增加了查询参数
- 让
xml返回 ContentResource 以便支持structAPI 的统一处理,这是一个破坏性的修改,如果在 Java 代码中使用了xml请注意。
conditional
虽然 Moco 提供了很多请求匹配器(RequestMatcher),但依然无法满足所有的场景。在这个版本中,Moco 提供了一个 conditional API,让使用者可以编写自己请求匹配逻辑:
server
.request(
conditional(request ->
request.getContent().toString().equals("foo")
))
.response("foo");
struct
在一些场景中,请求只关心请求的结构是否匹配,而不关心其内容,Moco 在这个版本中提供了 struct API 根据请求内容的结构进行匹配,在这个版本中支持了 JSON 和 XML 这两种有结构的内容。
JSON
对 JSON 结构进行匹配,如下所示:
- Java API
server
.request(struct(json("{\\\\\\\\"foo\\\\\\\\":1}"))
.response("response_for_json_struct");
- JSON API
[
{
"request": {
"struct": {
"json": {
"foo": 1
}
}
},
"response": {
"text": "response_for_json_struct"
}
}
]
对于上面的请求匹配设置,我们只要发结构与其一致的请求既可,而具体内容则不重要,比如:
{
"foo": 2
}
XML
对 XML 结构进行匹配,如下所示:
- Java API
server
.request(struct(
xml("1")))
.response("response_for_xml_struct_request");
- JSON API
[
{
"request": {
"struct": {
"xml": "1"
}
},
"response": {
"text": "response_for_xml_struct_request"
}
}
]
对于上面的请求匹配设置,我们只要发结构与其一致的请求既可,而具体内容则不重要,比如:
<request>
<parameters>
<id>2</id>
</parameters>
</request>
random 增强
random 是在 1.0.0 版本增加的一个模板函数,在 1.3.0 中,该函数进行了一些增强,可以支持设置随机值的范围。
在下面这个示例中,随机数会在 99 到 100 之间:
- Java API
server
.request(by(uri("/template")))
.response(template("${random(99, 100)}"));
- JSON API
{
"request": {
"uri": "/template"
},
"response": {
"text": {
"template": "${random(99, 100)}"
}
}
}
欢迎使用 1.3.0 版本,体验 Moco 最新的功能!