【发布时间】:2017-07-25 16:15:35
【问题描述】:
在这里搜索了其他类似的问题,它们似乎都与某种格式错误的请求有关(未提供id,或未正确包含参数)但这些似乎不是问题我有。
路由肯定存在,在浏览器中去路由就可以了。页面加载,一切。但是出于某种原因,Rspec 给了我一个 UrlGenerationError 。
我尝试在路由中手动指定控制器名称,更改为复数控制器,甚至使用不同的(复数)控制器。似乎某处的其他配置存在问题,但它是 URLGeneration 错误的错误非常无益。如果有任何其他想法,我将不胜感激。
我们在应用程序的其他地方有 API 控制器规范,这些规范似乎可以正常运行,但我无法区分这些和这个之间的设置差异。
我的错误:
1) Spaceman::ReputationEnhancementsController GET show has a 200 status code
Failure/Error: get :show
ActionController::UrlGenerationError:
No route matches {:action=>"show", :controller=>"spaceman/reputation_enhancements"}
# ./spec/controllers/spaceman/reputation_enhancements_controller_spec.rb:10:in `block (3 levels) in <top (required)>'
Finished in 1.14 seconds (files took 6.13 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/controllers/spaceman/reputation_enhancements_controller_spec.rb:9 # Spaceman::ReputationEnhancementsController GET show has a 200 status code
路线:
Spaceman::Engine.routes.draw do
resource :reputation_enhancement, path: "reputation-enhancement", only: [ :show, :create ] do
get :filter
end
end
测试:(我尝试在这里添加type: :controller,以及完全限定,改为添加Rspec.describe,等等...)
require "rails_helper"
describe Spaceman::ReputationEnhancementsController do
describe "GET show" do
it "has a 200 status code" do
get :show
expect(response.status).to eq(200)
end
end
end
rake routes
filter_reputation_enhancement GET /reputation-enhancement/filter(.:format) spaceman/reputation_enhancements#filter
reputation_enhancement GET /reputation-enhancement(.:format) spaceman/reputation_enhancements#show
POST /reputation-enhancement(.:format) spaceman/reputation_enhancements#create
编辑:
我尝试在路由中手动指定控制器名称,更改为复数控制器,甚至使用不同的(复数)控制器。似乎某处的其他配置存在问题,但它是 URLGeneration 错误的错误非常无益。如果有任何其他想法,我将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby rspec