0

ルートパス(/)を要求すると、ベータコントローラーの:newアクションにルーティングされることをテストしようとしています。これを手動で(ブラウザで)行うと、正常に機能します。しかし、私の自動テストはで失敗していNo route matches "/"ます。

config/routes.rb私は持っています

MyRailsApp::Application.routes.draw do
  root to: 'beta#new' # Previously: `redirect('/beta/join')`
end

私のspec/routing/root_route_spec.rb中で私は試しました

require 'spec_helper'
describe "the root route" do
  it "should route to beta signups" do
    get('/').should route_to(controller: :beta, action: :new)
  end
end

そしてまた試した

require 'spec_helper'
describe "the root route" do
  it "should route to beta signups" do
    assert_routing({ method: :get, path: '/' }, { controller: :beta, action: :new })                                                                                                                                     
  end
end

しかし、両方ともそれを不平を言うNo route matches "/"

1) the root route should route to the beta signups
   Failure/Error: get('/').should route_to "beta#new"
     No route matches "/"
   # ./spec/routing/root_route_spec.rb:5:in `block (2 levels) in <top (required)>'

ブラウザでに移動するlocalhost:3000と、アクションに正しくルーティングされBetaController::newます。

No route matches "/"エラーの説明は何ですか?

Rails3.1.3とRSpec-2.10を使用しています。

ありがとう!

4

1 に答える 1

2

/リダイレクト先をテストしてから、コントローラーのアクションにルーティングする/beta/join別の問題テストとしてテストする必要があります。/beta/join:new:beta

requestsリダイレクトは、ではなくでテストされroutingます。

# spec/requests/foobar_spec.rb
describe 'root' do
  it "redirects to /beta/join" do
    get "/"
    response.should redirect_to("/beta/join");
  end
end

# spec/routing/beta_spec.rb
...
it 'routes /beta/join to the new action'
  get('beta/join').should route_to(:controller => 'beta', :action => 'new')
end
于 2012-06-18T11:22:39.027 に答える