0

インデックスアクションを特定の週に絞り込むための名前付きルートがあります

match "workouts/week/(:date)" => "workouts#index", 
  :constraints => { :date => /\d{4}-\d{2}-\d{2}/ },
  :as => "workouts_date"

インデックスビューに特定の週のトレーニングのみが正しく表示されることをテストするための仕様を作成しようとしています。

  it 'populates an array of workouts for the week of the given date' do
    sunday_workout = FactoryGirl.create(:workout, date: Date.new(2012, 12, 31).beginning_of_week(:sunday))
    today_workout = FactoryGirl.create(:workout, date: Date.new(2012, 12, 31))
    saturday_workout = FactoryGirl.create(:workout, date: Date.new(2012, 12, 31).end_of_week(:sunday))
    next_week_workout = FactoryGirl.create(:workout, date: Date.new(2012, 12, 31).next_week)
    prev_week_workout = FactoryGirl.create(:workout, date: Date.new(2012, 12, 31).prev_week)
    this_week_workouts = [sunday_workout, today_workout, saturday_workout].group_by(&:date)
    get 'workouts/week/2012-12-31'
    assigns(:workouts).should eq this_weeks_workouts
  end

エラーが発生します:

Failure/Error: get 'workouts/week/2012-12-31'
 AbstractController::ActionNotFound:
   The action 'workouts/week/2012-12-31' could not be found for WorkoutsController

:indexアクションはインデックスですが、シンボルを提供する以外に、そこにルーティングする方法がわかりません。

編集:spec_helperファイルに以下を追加しました:

config.include Rails.application.routes.url_helpers

getリクエストをに変更しました

get workouts_date_path('2012-12-31')

しかし、私はまだ得ます

 The action '/workouts/week/2012-12-31' could not be found for WorkoutsController
4

1 に答える 1

1

コントローラテストでは、次のようにコントローラを呼び出す必要がありますget 'index', date: '2012-12-31'。コントローラのアクションをテストしていますが、ルーティングについては何も知りません。意味がありますか?ルーティングをテストする場合は、ルーティング仕様があります。

于 2012-05-05T10:54:50.013 に答える