2012-02-12 37 views
1

好的,我做了一个登录操作,但我对如何设置功能或单元测试有点困惑。会不会像从我的灯具发送用户名和密码,并检查会话[:user_id]是否为零?如何在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存在于会话变量中。

假设您正在使用标准的rails测试框架,这将放在您的会话控制器的功能测试下。你会测试重定向,并通过做这样的事情呈现:

assert_template "new" 

assert_redirected_to root_path 

此处了解详情(特别是有关可你已经做了后门柱的哈希值):

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