快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
culty => "Medium"}   assert_response :redirect   assert_redirected_to :action => ''list''   assert_equal num_trails + 1, Trail.count end

trails_controller_test.rb 中自动生成的这个测试用例的版本包括 post :create, :trail => {},它调用 create 方法,空哈希表表示新路线。这个代码应当创建一条新路线,该路线有一个所有属性 都为 null 的 Trail 对象。清单 6 修改了代码,以传递代表路线属性的哈希映射表。这个哈希映射表接 口对于在测试框架中指定对象而言非常有用。然后,测试用例用 Trail 模型确保创建了新路线。

清单 5 和清单 6 中的测试用例不像第 1 部分中的单元测试那样处理每个细节。但是它们可以保证调 用了业务逻辑,保证控制器逻辑没有检测到任何错误,并保证得到了正确的 HTTP 响应。

Rails 还提供了另一种测试用例:集成测试。

集成测试

功能测试用于测试单一特性,而集成测试可能触及许多不同的页面。例如,购物车单元测试可以测试 出您可能通过模型 API 将一件商品添加到购物车中。购物车的功能测试可以确保您能够通过登录某一 Web 页面将商品添加到购物车中。而集成测试则可以保证能够登录、添加商品和结账。

在 “Running Your Rails App Headless”(请参阅 参考资料)中,Mike Clark(Rails 社区领先的 测试专家之一)详细介绍了集成测试框架。开始进行讨论时,他介绍了如何运行没有 Web 页面的(即 headless)应用程序。这项功能使得搜集编写集成测试的足够信息变得更容易。从 Rails 1.1 开始,可 以直接从控制台调用控制器。不需要浏览器,只要调用 app 对象的 put 和 get 方法,就可以访问应用 程序的 Web 页面。

请启动控制台,键入清单 7 中的命令,通过 HTTP get 发出列表动作:

清单 7. 从控制台使用 Rails 集成测试框架

> script/console Loading development environment. >> app.class => ActionController::Integration::Session >> app.get(''trails'', ''list'') => 200 >> app.get("trails/list") => 200 >> app.response =~ /Barton Creek/ => false >> app.response =~ /Emma Long/ => false >> app.response.body =~ /Emma Long/ => 331 >>

在清单 7 中,从控制台以两种形式发送请求,调用 trails 控制器的 list 动作。然后,通过与正则 表达式 /Emma Long/ 匹配,可以看到生成的 HTML 页面中包含 Emma Long(一条路线)。您可以继续运 行 post 和 get:

清单 8. 通过 post 实现删除

>> app.post("trails/destroy/1") => 302 >> Trail.find_all => [#<Trail:0x25a8e34 @attributes={"name"=>"Bear Creek", "id"=>"2",   "description"=>"Too many downed trees.", "difficulty"=>"easy"}>] >> Trail.find_all.size => 1 >> app.response.redirect_url => "http://www.example.com/trails/list" >>

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

时间:2011-07-25 IBM Bruce Tate

通过控制台集成测试 API,现在有了构建集成测试的足够信息。请使用 script/generate integration_test DestroyAndShow 生成一个集成测试,并将它编辑成清单 9 那样:

清单 9. test/integration/destroy_and_show.rb

require "#{File.dirname(__FILE__)}/../test_helper" class DestroyAndShowTest < ActionController::IntegrationTest   fixtures :trails   def test_multiple_

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号