首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Moco 框架以及其在 Web 集成测试的应用(2)

Moco 框架以及其在 Web 集成测试的应用(2)

Moco 是什么作者是这样描述 Moco 的:
是一个简单搭建模拟服务器的程序库/工具,这个基于 Java    开发的开源项目已经在 Github 上获得了不少的关注。该项目的简介是这样描述自己的:Moco 是一个简单搭建 stub 的框架,主要用于测试和集成。这个框架的开发灵感来自    Mock 框架,如   和  。
为什么要开发这个框架?
集成,尤其是基于 HTTP 协议的集成——web service、REST 等,在我们的项目开发中被广泛应用。以前,我们每次都要往 Jetty 或 Tomcat 等应用服务器上部署一个新的 WAR。大家都知道,开发部署一个 WAR 的过程是很枯燥的,即使在嵌入式服务器上也是如此。而且,每次我们做一点改动,整个 WAR 都要重新组装。
Moco 的出现,正是为了解决这些问题。开发团队只要根据自己的需要进行相应的配置,就会很方便得到一个模拟服务器。而且,由于 Moco 本身的灵活性,其用途已经不再局限于最初的集成测试,比如,Moco 可以用于移动开发,模拟尚未开发的服务;Moco 还可以用于前端开发,模拟一个完整的 Web 服务器,等等。
在 2013 年 上,Moco 框架被提名为最具创新力的 Java 项目之一,在 Twitter 上得到了 Martin Fowler 的关注,详见《企业系统集成点测试策略》一文在 InfoQ 英文站
Moco 下的 Hello World首先,您需要:
  • 配置您的 Java 环境下载 Java 程序,并设置好系统环境变量 (PATH, JAVA_HOME)
  • 安装并配置 Gradle具体可以参考

接下来,按照下面的步骤安装 Moco
  • 获取 Moco 源文件
    • 使用 git 命令,获取最新的代码
    1
    git clone https://github.com/dreamhead/moco.git




    • 也可以直接下载编译好的 Jar 文件,目前是 0.9.1

    • 编译源代码,生成 Jar 文件 (用以编译好的 Jar 文件的,可以忽略这个步骤) 在命令行执行如下的命令
    1
    2
    cd <moco directory>
    ./gradlew build




  • 编写配置文件,以简单的 Hello World 为例
    1
    2
    3
    4
    5
    6
    7
    8
    [
      {
        "response" :
          {
            "text" : "Hello, Moco"
          }
      }
    ]




    将文件以 json 的后缀存储,比如 foo.json
  • 启动 Moco 服务在命令行输入
    1
    java -jar moco-runner-<version>-standalone.jar start -p 12306 -c foo.json




    注:-p 指定 Moco 服务端口 (目前仅指 Web 端口)
  • 访问 Web 服务打开浏览器,访问 http://localhost:12306
    您应该可以立即看到久违了的"Hello World"
Moco 的复杂实例实例一, 带参数的 HTTP 请求
有些时候我们希望能够在请求的同时,传递相应的参数。这时我们需要用到"queries"关键字
  • 配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "request" :
    {
      "uri" : "/foo",
      "queries" :
        {
          "param" : "blah"
        }
    },
  "response" :
    {
      "text" : "bar"
    }
}




  • 启动浏览器,并访问
1
http://localhost:12306/foo?parm=blash




实例二,基于正则表达的 URL 匹配
在很多对 URL 请求的测试中,我们希望对于多个相似的 URL,都返回相同的结果
  • 配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "request":
    {
      "uri":
        {
          "match": "/\\w*/foo"
        }
    },
  "response":
    {
      "text": "bar"
    }
}




  • 启动浏览器
在地址栏输入多个地址(/foo 前带有任意字符, 比如 http://localhost:12306/xxx/foo)
实例三:跳转
页面的自动跳转也是经常在 Web 开发中遇到的问题之一
  • 配置文件
1
2
3
4
5
6
7
{
  "request" :
    {
      "uri" : "/redirect"
    },
  "redirectTo" : "http://www.github.com"
}




  • 启动浏览器访问 http://localhost:12306/redirect
页面将会被自动导向到 http://www.github.com
实例三: 返回 JSON 对象
在 Web 开发中,对于 JSON 的操作是最典型的应用
  • 配置文件
1
2
3
4
5
6
7
8
9
10
{
    "request": {
        "uri": "/json"
    },
    "response": {
        "json": {
            "foo" : "bar"
        }
    }
}




  • 启动浏览器访问 http://localhost:12306/json
页面上会显示输出的 JSON 对象
返回列表