我如何在Rails中为此设置功能测试?

时间:2012-02-12 03:48:40

标签: ruby-on-rails ruby unit-testing functional-testing

好的,所以我做了一个登录操作,但是我对如何为此设置功能或单元测试感到困惑。是不是喜欢从我的灯具上发送用户名和密码,并检查会话[:user_id]是否为零?

提前致谢:)

    #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

1 个答案:

答案 0 :(得分:2)

逻辑上,您可以进行多项测试:

  1. 发送无效的电子邮件(适用于您尚未创建的用户)。您可以检查闪存,然后检查是否已呈现新内容。
  2. 发送无效密码(对于您创建的用户)。检查闪光灯,并且已经渲染了新的。
  3. 发送有效的电子邮件/密码组合(针对您已呈现的用户)。检查您是否已正确重定向,并且user_id存在于会话变量中。
  4. 假设您使用的是标准rails测试框架,则会将其置于会话控制器的功能测试之下。您可以通过以下方式测试重定向和渲染:

    assert_template "new"
    

    assert_redirected_to root_path
    

    此处有更多信息(特别是关于您完成帖子后可用的哈希):

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