2012-02-12 4 views
1

だから私はログインアクションを作ったが、私はこのための機能テストやユニットテストのセットアップ方法についてちょっと混乱している。私のフィクスチャのユーザ名とパスワードを送信し、セッション[:user_id]がnilであるかどうかを確認するようなものでしょうか?事前にRailsでこの機能テストをどのようにセットアップするのですか?

感謝:)

#POST /sessions 
    def create 
    user = User.authenticate(params[:email],params[:password]) 
    if user 
     session[:user_id] = user.id 
     redirect_to root_path, :notice => "Logged in successfully!" 
    else 
     flash.now.alert = "Invalid username/password" 
     render "new" 
    end 
    end 

答えて

2

は論理的に、あなたが作ることができるいくつかのテストがあります

  1. は(あなたが作成していないユーザーのために)不正な電子メールを送信します。あなたはフラッシュをチェックすることができ、新しいものがレンダリングされたことを確認することができます。
  2. 無効なパスワードを送信します(作成したユーザー用)。フラッシュを確認し、新しいものがレンダリングされている。
  3. (あなたがレンダリングしたユーザーのために)有効なメール/パスワードのコンボを送信します。あなたが適切にリダイレクトされ、user_idがセッション変数に存在することを確認してください。

標準レールテストフレームワークを使用していると仮定すると、これはセッションコントローラの機能テストの下に置かれます。あなたは、リダイレクトのためにテストし、のようなものを実行してレンダリングしたい:

assert_template "new" 

assert_redirected_to root_path 
ここ

詳細情報(特にあなたがポストをやった後に利用可能ですハッシュ程度):

http://guides.rubyonrails.org/testing.html#functional-tests-for-your-controllers