在深入研究此问题后,我对文档的理解和我的结果之间陷入了僵局。
根据https://www.relishapp.com/rspec/rspec-rails/v/2-8/docs/routing-specs/route-to-matcher的说明,我们应该能够编写以下内容:
我在任何地方都找不到关于这个具体问题的报告。
补充细节:手动测试时,路由器可以完美地解析。
根据https://www.relishapp.com/rspec/rspec-rails/v/2-8/docs/routing-specs/route-to-matcher的说明,我们应该能够编写以下内容:
#rspec-rails (2.8.1)
#rspec (>= 1.3.1)
#rspec-core (~> 2.8.0)
# routing spec
require "spec_helper"
describe BusinessUsersController do
describe "routing" do
it "routes to some external url" do
get("/business_users/7/external_url").should route_to("http://www.google.com")
end
end
end
# routes.rb
BizeebeeBilling::Application.routes.draw do
resources :business_users do
member do
get "external_url" => redirect("http://www.google.com")
end
end
end
运行此规范将产生以下结果: 失败:
1) BusinessUsersController routing routes to some external url
Failure/Error: assert_routing "/business_users/7/external_url", "http://www.google.com"
ActionController::RoutingError:
No route matches "/business_users/7/external_url"
# ./spec/routing/business_users_routing_spec.rb:19:in `block (3 levels) in <top (required)>'
我在任何地方都找不到关于这个具体问题的报告。
补充细节:手动测试时,路由器可以完美地解析。
before
块中,我加载了seeds.rb
,因为即使在测试中也需要一些基线数据。但由于重定向使用了一个微小的Rack应用程序,加载seeds.rb
会失败,对于任何模型都会出现“找不到表”的错误,可能是因为非Rails Rack应用程序不使用ActiveRecord。所以我没有好的方法来进行重定向路由的回归测试,虽然它们在应用程序中可以工作,但我无法让测试通过。 :-( - Armando Foxexpect(response).to redirect_to("http://www.google.com")
。 - Dave Morse