2011-01-30 23 views
1

ブレイク私はRailsの上のマイケル・ハートルの優れたチュートリアルを働いていますが、私は運動7とのトラブルを抱えています第11章ルビー、演習7は - 私のRSpecのテスト

でこの演習では、次のとおりです。

resources :users do 
    resources :microposts, :only => [:create, :destroy] 
end 

私が正常にABから/ユーザー/ 1 /マイクロポストを呼び出すことができる午前:私は読むために私のroutes.rbファイルを変更することで成功し、これをやった

Add a nested route so that /users/1/microposts shows all the microposts for user 1. (You will also have to add a Microposts controller index action and corresponding view.)

rowser。しかし、microposts_controller_spec.rbのテストのほとんどが壊れています。自動テストを実行しているときに "no route matches"エラーが表示されます。例えば、単に読み込む最初のテスト、:

it "should deny access to 'create'" do 
    post :create 
    response.should redirect_to(signin_path) 
end 

は今、次のエラーを生成します。

1) MicropostsController access control should deny access to 'create' Failure/Error: post :create No route matches {:controller=>"microposts", :action=>"create"}

私はrake routes

をチェックすると、私はこのエントリを見つける:

user_microposts POST /users/:user_id/microposts(.:format)  {:action=>"create", :controller=>"microposts"} 
経路が存在することを示唆する

チュートリアルを完了している間に誰かがこの問題にぶつかりましたか?ネストされたルートを導入すると、スペックファイルに変更する必要はありますか? Rspecはネストされたルートで動作しますか?

おかげ

答えて

2

これは、あなたが通過user_idを渡す必要があります、ネストされたルートであるので:RSpecのは、このパラメータなしで/micropostsルートへ行くしようとします

some_user = way_of_creating_a_user_goes_here 
post :create, :user_id => some_user.id 

+0

答えていただきありがとうございます。私はこれを試したと思ったが、明らかに私はそれを正しくしなかった。 – Kevin