Ruby on rails 如何对有约束的轨道线路进行功能测试?
我有一个Rails 3应用程序,正在尝试为所有路由编写测试 想象一下这条非常简单的路线:Ruby on rails 如何对有约束的轨道线路进行功能测试?,ruby-on-rails,functional-testing,rails-routing,Ruby On Rails,Functional Testing,Rails Routing,我有一个Rails 3应用程序,正在尝试为所有路由编写测试 想象一下这条非常简单的路线: resources :jobs, :constraints => {:id => /\d+/} 我现在想测试一下。在我的功能测试中,对于肯定的情况,使用In-Rails编写断言非常简单: assert_routing "jobs/4", { :controller => "jobs", :action => "show", :id => "4" } 断言否定的最好方式是什么
resources :jobs, :constraints => {:id => /\d+/}
我现在想测试一下。在我的功能测试中,对于肯定的情况,使用In-Rails编写断言非常简单:
assert_routing "jobs/4", { :controller => "jobs", :action => "show", :id => "4" }
断言否定的最好方式是什么?也就是说,没有通过约束的“作业/wibble”没有被路由,而是返回一个错误?有没有一些简单的方法来实现“assert\u not\u routing”或类似的东西?以前有人处理过这个问题吗?您是否尝试过为路径断言一个nil路由?我最终找到的解决方案是在功能测试中测试有效URL的路由,并在集成测试中测试无效URL的非路由 我创建了一个名为RouteTest的新集成测试类,并在其中存储了所有不应该路由到任何地方的URL
require 'test_helper'
class RoutesTest < ActionDispatch::IntegrationTest
test "broken routes don't work" do
assert_raise(ActionController::RoutingError) {
get "/jobs/wibble"
}
end
end
需要“测试助手”
类RouteTest
我仍然在功能测试中测试有效的路由。这里有一些测试神学失败的可能性最大:在我们提出的关于单元、集成和函数概念中特定测试应该去哪里的武断而相当荒谬的理论中,这似乎有点奇怪。但我宁愿完成这项工作,也不愿与人争论测试神学。所以我就是这么做的。Tom-你不使用rspec有什么测试神学的原因吗。或者这不是你想要的?(不应该是可路由的)我不使用RSpec的主要原因是懒惰,以及过去Cucumber给我的Rails 2.x应用程序造成严重破坏的糟糕经历。我可能应该改用RSpec了。好吧,然后我会投票支持你的答案,因为它是“正确的”,而且现在还增加了一个有趣的附录“只是可能使用RSpec”!