環境
コードに基づいて説明できない、非常に奇妙なテストの失敗が発生しています。以下に示すスペック テストを実行すると、次のエラーが表示されます。
失敗:
1) GroupsController GET 'index' は HTTP の成功を返します 失敗/エラー: get 'index' ActionController::UrlGenerationError: 一致するルートがありません {:action="index", :controller="groups"} # ./spec/controllers/ groups_controller_spec.rb:14:in `ブロック (3 レベル) in '
テストケース
RSpec で設定されたコントローラーとルートのテスト ケースは次のようになります。
describe GroupsController do
before :each do
@group = FactoryGirl.create(:group)
@user = FactoryGirl.create(:user)
sign_in @user
end
describe "GET 'index'" do
it "returns http success" do
get 'index'
response.should be_success
end
end
end
テスト対象のコントローラー
テストに基づいて、コントローラーの非常に基本的なスケルトンを作成しました。現在、それは多くのことをしていません。
class GroupsController < ApplicationController
before_filter :authenticate_user!
def index
@groups = current_user.groups
end
end
コントローラーに到達するように構成されたルート
routes.rb ファイルは次のようになります。
NerdCooking::Application.routes.draw do
resources :groups
devise_for :users
root :to => "home#welcome"
end
ルート
groups GET /groups(.:format) groups#index
POST /groups(.:format) groups#create
new_group GET /groups/new(.:format) groups#new
edit_group GET /groups/:id/edit(.:format) groups#edit
group GET /groups/:id(.:format) groups#show
PATCH /groups/:id(.:format) groups#update
PUT /groups/:id(.:format) groups#update
DELETE /groups/:id(.:format) groups#destroy
質問
リソースルートの代わりに "groups" => "groups#index" を取得するようにルートを変更しようとしましたが、これは機能しますが、RESTful サービスとしても使用したいので、これは望ましくありません。
ここで何が間違っていますか?
更新: グループに関連するルートを追加しました。