首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ruby on rails中测试路由的位置

在ruby on rails中测试路由的位置
EN

Stack Overflow用户
提问于 2011-03-13 23:14:33
回答 5查看 13K关注 0票数 18

在ruby on rails中哪里可以测试路由?

  • 单元测试-

添加:

准确地说,在何处应用on guideson api描述的断言

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-13 08:41:05

路由应该作为集成测试的一部分来完成。集成测试是测试应用程序的重要工作流程的地方-更具体地说,是否定义了URL似乎是一个重要的工作流程。

您的集成测试将看起来像任何normal integration test

代码语言:javascript
复制
# /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

至于@jemminger对不测试路由的回应--虽然验证routes.rb工作的是Rail的测试,但测试你的路由中是否定义了http://yoursite.com/users并不是Rail的责任。需要注意的是,大多数路由测试可以在现有的集成测试中完成,所以针对路由的特定测试可能是多余的。

我能想到的具体用例是所有已经或将要从Rails2升级到Rails3的人。定义路由的代码已经发生了重大变化,最好是从测试中发现路由升级正确,而不是用户报告404错误时。

票数 16
EN

Stack Overflow用户

发布于 2011-03-14 00:32:02

为什么您觉得有必要测试这些路由?纯粹为了确保routes.rb中定义的路由能够正常工作?如果是这样,那就不要这样做。确保框架内部正常运行不是应用程序测试的工作,而是Rails框架自己测试的工作。

如果您想要测试某种动态/用户可定义的路由,我可能会选择集成。

票数 10
EN

Stack Overflow用户

发布于 2015-02-16 11:31:18

我建议您为测试/控制器文件夹中的路由创建一个测试文件。

代码语言:javascript
复制
class HomeRoutesTest < ActionController::TestCase

  test "must route to home index" do
    assert_routing '/', controller: "home", action: "index"
  end

end

有人提到,它们属于集成测试。我不同意。您只是测试路由,仅此而已。因此,它宁愿进行功能测试,甚至单元测试,而不是集成测试。

您可以在Rails RailsGuide Testing, section 9. Testing Routes中找到参考资料

集成测试是针对流程的,您可以在其中测试不同控制器操作的交互,例如执行业务流程,如用户登录、浏览站点和将项目放入篮子中。也就是说,如果您的路由不起作用,那么集成测试就不会起作用。因此,许多人说集成测试是测试路由的地方。但是,考虑到开发周期,在进行集成测试之前,您需要先创建单元测试、控制器测试、路由测试等。

另外,assert_routing做了两个测试:assert_generatesassert_recognizes

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5290245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档