我有一个相当简单的Rails3项目,我在其中定义了一个自定义路由:
get 'factions/:name' => 'factions#show', :as => :factions
get 'factions' => 'factions#index'
当运行CCD_ 1时,它给了我期望的页面(http://localhost:3000/factions/xyz
是显示app/views/factions/show.html.haml
的HTTP 200)。然而,我已经尝试了多种不同的方式来表达一个有效的规范,下面是我的最新化身:
require 'spec_helper'
describe FactionsController do
render_views
describe "GET 'show'" do
before { get '/xyz' }
subject { controller }
it { should respond_with(:success) }
it { should render_template(:show) }
end
describe "GET 'index'" do
it "should be successful" do
get 'index'
response.should be_success
end
end
end
GET 'index'
规范顺利通过,但无论我做什么,GET 'show'
规范都无法通过——即使我在本地浏览它们时它们确实成功了。
1) FactionsController GET 'show'
Failure/Error: before { get '/xyz' }
ActionController::RoutingError:
No route matches {:controller=>"factions", :action=>"/xyz"}
# ./spec/controllers/factions_controller_spec.rb:7:in `block (3 levels) in <top (required)>'
操作确实应该是show
,但我的routes.rb
配置一定不正确。什么东西?
(附加上下文:我使用bundle exec spork
来加快我的规格,我已经多次重新启动spork
服务器,只是为了确保我没有完全疯掉。)
更改:
before { get '/xyz' }
收件人:
before { get :show, :name => 'xyz' }