我正在尝试将我的应用程序从Rails 3.2.x移植到Rails 4.0.4。所有的宝石都已经兼容,我正处于修复失败测试的阶段。
我有这种奇怪的测试失败。
我的routes.rb
resources :my_reports, only: [:index] do
collection do
get "/report/:filename", to: :show, prefix: "pri/excl/rep", as: :show
end
end
我的规范已经在Rails 3.2.x中传递,现在在更新到4.0.4后失败
describe MyReportsController do
describe "#show" do
def make_request
get :show, prefix: 'some/place', filename: 'foo', format: 'doc'
end
it "makes a simple request" do
make_request
end
end
end
我收到以下错误
Failure/Error: get :show, prefix: 'some/place', filename: 'foo', format: 'doc'
ActionController::UrlGenerationError:
No route matches {:action=>"show", :controller=>"my_reports",
:filename=>"foo", :format=>"doc", :prefix=>"some/place"}
我被困在这一点,欢迎提示。我正在使用rspec和rspec-rails版本2.14.1。
答案 0 :(得分:13)
在测试中传递一个虚拟:id为我修复了问题虽然我不喜欢它,测试通过。
get :show, id: "", prefix: 'some/place', filename: 'foo', format: 'doc'
请参阅rails版本here的状态。
答案 1 :(得分:0)
您正在描述show
方法,但您的路线仅适用于index
。也许这是解决方案的开始。