快速业务通道

跨越边界: 在集成框架中进行测试,第2部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
段的执行输出替代这一部分。语句可 能不存在。

执行 <%= 和 %> 之间的代码段(被称为表达式),并用代码段返回的值替代这一部分。

处理布局、偏好、帮助程序以及其他类型的代码片断时。这些特性允许使用不同的复合部件构建复杂 的 Web 页面。在这里,我就不对细节做过多介绍了。

在有了模板策略之后,现在再来看一下 清单 4。您可以看到访问活动记录 Trail 模型并用 <% for trail in @trails %> 命令在 @trails 中的每条路线上循环的 list.rhtml 视图。(您已经填充 了控制器中的 @trails 实例变量)。对于每条路线,该视图都将得到 Trail.content_columns,它是 trails_development 数据库中 trails 表的列的列表。然后,该视图通过在列表中的每个列上进行循环 ,提供数据库中每一列的值。trail.send(column_name) 命令把 name、difficulty 和 description 方 法发送给 trail。

跨越边界: 在集成框架中进行测试,第2部分(3)

时间:2011-07-25 IBM Bruce Tate

现在是在屏幕上查看结果的时候了。如果回忆一下,应当记得您已经在第 1 部分的示例中键入了一些 fixture 形式的测试数据。要把它们加载到开发环境(fixture 默认装入测试环境)中,则只需键入 rake load_fixtures 即可。启动 Rails 服务器(在 Unix 上用 script/server,在 Windows 上用 ruby script/server),把浏览器指向 localhost:3000/trails/list 就可以看到结果。在这个 URL 中, trails 是控制器的名称,list 是动作的名称,由 list 控制器方法实现。图 1 显示了结果:

清单 1. 列出路线

跨越边界: 在集成框架中进行测试,第2部分 - 编程入门网

正如所期望的那样,可以看到一个包含每条路线的名称、说明和难度的表。接下来,我将介绍 Rails 的功能测试框架如何只通过一条 HTTP put 命令访问 Web 页面。

分解功能测试

回忆一下就可以知道,Rails 单元测试只处理模型。Rails 中的功能测试调用 Web 页面,然后检查结 果,从上到下地测试某一特性(包括模型、视图和管制器)。这种级别的集成测试很重要,因为可以确保 系统的主要元素之间的交互与您对所提供的每个特性的预期一样。

Rails 的每个功能测试用例都要进行 HTTP put 和 get。它们调用控制器的动作;控制器访问模型和 视图,并呈现 Web 页面和结果。要获得详细的工作示例,请参见 Rails 在框架中生成的测试用例:

清单 5. 来自 test/functional/trails_controller_test.rb 的 test_list

def test_list   get :list   assert_response :success   assert_template ''list''   assert_not_nil assigns(:trails) end

清单 5 中的测试用例利用 get :list 命令执行了一个简单的 HTTP get。然后,测试用例运行了三个 断言:

assert_response :success:HTTP 命令成功完成。

assert_template ''list'':控制器动作呈现 list 模板。

assert_not_nil assigns(:trails):控制器把 @trails 实例变量分配给一些非 null 的值。

使用单元测试框架,如果断言为 ture,没有错误出现,那么测试用例就通过;否则,测试用例失败。

test_list 测试用例可以声明 :success 响应,但是它应当声明 :redirect (代表 HTTP 重定向)、 :missing (代表 not_found),或代表单个 HTTP 返回代码的整数。请参阅 参考资料,获得 HTTP 返回 代码的详尽列表。现在请看 test_create,它使用了一个 HTTP put。请将 test_create 更改成如清单 6 所示:

跨越边界: 在集成框架中进行测试,第2部分(4)

时间:2011-07-25 IBM Bruce Tate

清单 6. 测试表单

def test_create   num_trails = Trail.count   post :create, :trail => {:name => "Hermosa Creek", :description =>     "Lots of altitude, all down", :diffi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号