次のルートを定義し、次の UsersController を定義しました。 { visit signup_path } の前に試行する spec テストを実行しようとすると、次のエラーが発生します。
エラー
Failure/Error: before { visit signup_path}
ActionController::RoutingError:
uninitialized constant UserController
# ./spec/requests/user_pages_spec.rb:7:in `block (3 levels) in <top (required)>'
resources :users
ルート.rb
resources :users
match '/signup', to: 'users#new'
match '/help', to: 'static_pages#help'
root :to => 'static_pages#help'
users_controller.rb
class UsersController < ApplicationController
def new
end
def show
@user = User.find(params[:id])
end
end
**user_pages_spec.rb** を更新しました
describe "UserPages" do
subject { page }
describe "Signup Page" do
before { visit signup_path}
it "Should have header Sign-up" do
should have_selector("h1", text: "Sign-up")
should have_selector("title", text: "Sign-up")
end
end
describe "profile page" do
let(:user) {FactoryGirl.create(:user)}
before { visit user_path(user) }
it { should have_selector("title", text: "#{user.name} Profile")}
it { should have_selector("h1", text: user.name)}
end
end
これが私のルートです:
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
signup /signup(.:format) users#new
help /help(.:format) static_pages#help
root / static_pages#help
問題なく www.blah.com/signup にアクセスできます。しかし、仕様は単一の UserController を探しています。また、「/users/new」を「signup_path」に置き換えると、テストに合格します。
また、もともと私がレールジェネレーターを使用して単一バージョンを使用してコントローラー(のみ)を作成したことを追加したかった。しかし、rails destroy コントローラー スクリプトを使用してそれを発見した後、私はそれを撤回しました。次に、複数バージョンの正しい Rails ジェネレーターを発行しました。私が言ったように、それはテストが台無しにされたようですが、実際のアプリです。