• 2016-05-23

    Moco 0.11.0发布

    Tag:moco

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/336983226.html

    前版信息:Moco 0.10.2发布

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

    Moco是什么?

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

    变更

    本次发布主要增加了两个大的特性:REST API 和 JUnit 集成。

    众所周知,REST 服务几乎已经成了现代服务端开发的标配。为了简化 REST API 的模拟,Moco 专门提供了特定的 API,比如,下面这个例子:

    RestServer server = restServer(port, log());
    ResourceObject resource = new ResourceObject();
    resource.code = 1;
    resource.message = "hello";

    server.resource("targets",
        get("1").response(toJson(resource))
    );

    RestServer 的 resource 方法是为配置资源而设计的,主要配置资源的名字,以及访问的设置。这里的例子里,我们声明了一个名为 targets 的资源,我们还配置了一个 get 方法,当资源 ID 为1时,返回相应的对象。这个配置可以通过 /targets/1 访问得到。

    REST API 同样支持 JSON 配置文件,上面的例子用 JSON 配置文件的形式可以写成如下格式:

    [
    "resource": {
      "name": "targets",
      "get": [
        {
          "id": "1",
          "response": {
            "json": {
              "code": 1,
              "message": "foo"
            }
          }
        }
      ]
    }
    ]

    访问 REST API 的文档可以了解更多细节。

    Moco 的 JUnit 集成是利用 JUnit 的特性,进一步简化测试代码的编写。

    public class MocoJunitJsonHttpRunnerTest {
        @Rule
        public MocoJunitRunner runner = MocoJunitRunner.jsonHttpRunner(12306, "foo.json");

        @Test
        public void should_return_expected_message() throws IOException {
            Content content = Request.Get("http://localhost:12306").execute().returnContent();
            assertThat(content.asString(), is("foo"));
        }
    }

    这里声明了一个 JUnit 的规则(Rule),它会在测试运行之前启动一个 Moco 服务器,在测试运行完毕之后关闭它。利用 Rule 的特性,就不必在每个测试里去启停 Moco 服务器了。

    更多发布相关信息,请参考 Release Notes

    分享到:

    历史上的今天:

    告别mock 2011-05-23
    画地为牢 2010-05-23
    引用地址: