Moco 0.9 发布,模拟服务器

dreamhead
 dreamhead
发布于 2013年11月02日
收藏 14

我很高兴地宣布,Moco 0.9发布了。

Moco是什么?

Moco是一个可以轻松搭建测试服务器的框架/工具/程序库。

变更

本次发布包含两个重大的新特性,事件和验证。

事件指的是,在某种情况下,触发相应的处理。目前支持的事件是“完成”事件,也就是说,当一个请求处理完成时,我们可以做相应的处理。

比如,我们可以用如下代码在请求处理之后,发出另外一个请求。

server.request(by(uri("/event"))).response("event").on(complete(get("http://another_site")));

我们还可以声明这个请求是异步的,这样不会阻塞本次调用给客户端回应答。

server.request(by(uri("/event"))).response("event").on(complete(async(post("http://another_site", "content"), latency(1000))));

这种情况可以用于诸如OAuth认证之类的情形,在服务器接到一个请求之后,发起另外一个请求。

它也支持相应的JSON配置:

{
"request": {
   "uri" : "/event"
},

"response": {
   "text": "event"
},
"on": {
   "complete": {
       "async" : "true",
       "latency" : 1000,
       "post" : {
           "url" : "http://another_site",
           "content": "content"
       }
   }
}
}

验证,是一个用于测试代码中的特性,类似于Mock框架中的verify功能,对请求进行验证。下面是一个例子。

RequestHit hit = requestHit();
final HttpServer server = httpserver(12306, hit);
server.get(by(uri("/foo"))).response("bar");

running(server, new Runnable() {
 @Override
 public void run() throws Exception {
   assertThat(helper.get(remoteUrl("/foo")), is("bar"));
 }
});

hit.verify(by(uri("/foo")), times(1));

这里的verify的第一个参数是一个matcher,也就是说,我们可以写任意的条件组合,甚至与设置服务器的完全不同。

此外,我们还支持未预期请求的验证,如下:

hit.verify(unexpected(), never());

目前支持的验证条件包括:

  • never: 没有收到这样的请求。
  • time: 准确匹配收到这些次数的请求。
  • atLeast:至少收到这些次数的请求。
  • atMost:至多收到这些次数的请求。

此外,还有一些小特性的变更:

  • 缺省情况下,关闭了使用API方式的日志。
  • seq API支持了ResponseHandler接口。
  • 为PUT和DELETE方法增加了快捷方式。

在内部实现细节上也有一些微调:

  • 如果不提供端口,服务器会自行选择可用端口。
  • 在Failover的实现里,“statusCode”改成了“status”。如果因此造成了测试失败,可以手工修改Failover文件。

感谢

感谢Paul Hammant,为Moco提供了大量的反馈,并激发了验证特性实现的灵感。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Moco 0.9 发布,模拟服务器
加载中

最新评论(4

dreamhead
dreamhead

引用来自“yuanyunchang”的评论

有了spring-boot,分分钟跑起一个spring mvc 应用,相比之下moco 的优势在哪里?

目的完全不一样,moco是用来做模拟服务器的,而不是用来做一个产品应用的,重要的是,moco配置起来非常简单。
dreamhead
dreamhead

引用来自“HeAntai”的评论

moco不错
提个建议,当配置请求太多时不好直观看到请求的测试内容
json配置文件中可以对请求进行注释,如下
[
//comment
{
"request" :
{
"uri" : "/foo"
},
"response" :
{
"text" : "1"
}
},
//comment
{
"request" :
{
"uri" : "/goo"
},
"response" :
{
"text" : "2"
}
}
]
目前使用时得改一下HttpServerParser的源码

现在有一个字段叫description,用来给每个session做注释。
H
HeAntai
moco不错
提个建议,当配置请求太多时不好直观看到请求的测试内容
json配置文件中可以对请求进行注释,如下
[
//comment
{
"request" :
{
"uri" : "/foo"
},
"response" :
{
"text" : "1"
}
},
//comment
{
"request" :
{
"uri" : "/goo"
},
"response" :
{
"text" : "2"
}
}
]
目前使用时得改一下HttpServerParser的源码
dukerr
dukerr
有了spring-boot,分分钟跑起一个spring mvc 应用,相比之下moco 的优势在哪里?
返回顶部
顶部