Ant*_*kov 17 testing routing ruby-on-rails ruby-on-rails-3
在轨道上测试红宝石路线的位置?
加成:
Gav*_*ler 15
路由应作为集成测试的一部分完成.集成测试是测试应用程序的重要工作流程的地方 - 更具体地说,是否定义了URL似乎是一个重要的工作流程.
您的集成测试看起来像任何正常的集成测试:
# /tests/integration/routes_test.rb
require 'test_helper'
class RoutesTest < ActionController::IntegrationTest
test "route test" do
assert_generates "/photos/1", { :controller => "photos", :action => "show", :id => "1" }
assert_generates "/about", :controller => "pages", :action => "about"
end
end
Run Code Online (Sandbox Code Playgroud)
至于@jemminger没有测试路线的反应 - 虽然铁路公司的测试验证了routes.rb是否有效,但铁路公司没有责任测试是否http://yoursite.com/users在您的路线中定义.需要注意的是,大多数路由测试可以在现有的集成测试中完成,因此路由的特定测试可能是多余的.
我能想到的具体用例是已经或将要从Rails 2升级到Rails 3的所有人.定义路由的代码已经发生了重大变化,最好从测试中发现路由已经升级正确,而不是用户报告404错误时.
jem*_*ger 10
为什么你觉得需要测试路线?纯粹是为了确保routes.rb中定义的路由确实有用吗?如果是这样,那就不要了.这不是应用程序测试的工作,以确保框架的内部运行正常 - 这是Rails框架自己的测试的工作.
如果您想要测试某种动态/用户可定义的路由,我可能会选择集成.
我建议你为test/controllers文件夹中的路由创建一个测试文件.
class HomeRoutesTest < ActionController::TestCase
test "must route to home index" do
assert_routing '/', controller: "home", action: "index"
end
end
Run Code Online (Sandbox Code Playgroud)
有人提到它们属于集成测试.我不同意.你只是测试路线,就是这样.所以它更倾向于功能甚至单元测试而不是集成测试.
您可以在Rails RailsGuide测试的第9节中找到参考.测试路由
集成测试用于流程,您可以在其中测试不同控制器操作的交互,例如执行用户登录等业务流程,浏览站点并将项目放入购物篮.这表示如果您的路由不起作用,您的集成测试将无法工作.因此,许多人说集成测试是测试路由的地方.但是,考虑到开发周期,在进行集成测试之前,首先要创建单元测试,控制器测试,路由测试等.
而另一方面说明:assert_routing两种测试都是:assert_generates和assert_recognizes.
| 归档时间: |
|
| 查看次数: |
10655 次 |
| 最近记录: |