Railsでコントローラーの1つをテストするためにRspecテストを作成しようとしていますが、正しいparamsハッシュを取得するのに問題があります。
アクティビティコントローラのcreateメソッドは次のようになります(updateメソッドは同じです)。ご覧のとおり、受信するparamsハッシュには、:activity、:start_time、および:end_timeハッシュがあります。
def create
@activity = Activity.new(params[:activity])
@activity.start_time = to_interval(params[:start_time])
@activity.end_time = to_interval(params[:end_time])
respond_to do |format|
....
rspecアクティビティコントローラーの仕様は次のようになります
it "redirects to the activity" do
activity = Activity.create! valid_attributes
put :update, :id => activity.id, :activity => valid_attributes
response.should redirect_to(activity)
end
2行目は有効な属性を呼び出します
def valid_attributes
FactoryGirl.attributes_for(:activity)
end
ハッシュを返します
{"id"=>"1", "name"=>"Some Activity1"}
コントローラがそれを受信すると、ハッシュは次のようになります。
{"activity"=>{"id"=>"1", "name"=>"Some Activity1"}, "controller"=>"activities", "action"=>"create"}
ご覧のとおり、:start_timeと:end_timeのハッシュがありません。結局、私は次のようなハッシュが必要です
{"activity"=>{"id"=>"1", "name"=>"Some Activity1"}, "start_time"=>{"hours"=>"1", "minutes"=>"0"}, "end_time"=>{"hours"=>"1", "minutes"=>"0"}, "controller"=>"activities", "action"=>"create"}
:start_timeハッシュと:end_timeハッシュをparamsハッシュに追加するための正しい構文がわかりません。createメソッドは3つのハッシュを以下の形式に結合するため、FactoryGirlから返されたハッシュと組み合わせることができません。これは、:start_timeと:end_timeが:activitiesハッシュに埋め込まれているため、正しくありません。
{"activity"=>{"id"=>"1", "name"=>"Some Activity1", "start_time"=>{"hours"=>"1", "minutes"=>"0"}, "end_time"=>{"hours"=>"1", "minutes"=>"0"}}, "controller"=>"activities", "action"=>"create"}
どんな助けやヒントもありがたいです、そして私はあなたの時間と助けに感謝します!!