3

環境

コードに基づいて説明できない、非常に奇妙なテストの失敗が発生しています。以下に示すスペック テストを実行すると、次のエラーが表示されます。

失敗:

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 サービスとしても使用したいので、これは望ましくありません。

ここで何が間違っていますか?

更新: グループに関連するルートを追加しました。

4

1 に答える 1

3

どうやら私のガードとスポークは意地悪をしていたようです。

Guard/Spork を再起動すると、すべて期待どおりに動作しました。コードと構成を振り返ってみると、問題が発生する理由はありませんでした。

したがって、他の誰かがこの動作を経験していて、その構成とコードをチェックアウトしている場合。再起動!

于 2013-11-01T19:53:26.510 に答える