Ruby on rails 在Rails应用程序中使用RSpec测试登录流

Ruby on rails 在Rails应用程序中使用RSpec测试登录流,ruby-on-rails,login,rspec,integration-testing,flow,Ruby On Rails,Login,Rspec,Integration Testing,Flow,我正在使用RSpec测试rails中的控制器行为。我的期望之一是以下场景: 用户尝试使用参数访问受保护(需要登录)的url/home?val=123 该用户被重定向到登录页面 登录后,用户应重定向回最初请求的URL,并带有相关参数 我正在为我的auth系统使用designe(使用omniauth),并且我已经设置了推荐的宏来登录用户 诸如此类 我对如何测试上述行为的流程有点困惑: describe HomeController do context "user is logged out"

我正在使用RSpec测试rails中的控制器行为。我的期望之一是以下场景:

  • 用户尝试使用参数访问受保护(需要登录)的url
    /home?val=123
  • 该用户被重定向到登录页面
  • 登录后,用户应重定向回最初请求的URL,并带有相关参数
  • 我正在为我的auth系统使用designe(使用omniauth),并且我已经设置了推荐的宏来登录用户 诸如此类

    我对如何测试上述行为的流程有点困惑:

    describe HomeController do
      context "user is logged out" do
        it "redirects back to original page after signin" do
          # user is not signed in - redirected to login page
          get :index, { :val => '12345' }
          current_user.should_not be_present
          expect(response).to redirect_to(login_page_path)
    
          # should now login the user and verify
          # that request.fullpath == '/home?val=12345'
    
          # ?...
        end
      end
    
    end
    

    它甚至属于控制器规范吗?如有任何帮助或示例,将不胜感激。谢谢。

    Luacassus看起来有一个不错的答案,但是你看过水豚的请求测试吗

    这里有一个非常不错的教程

    这基本上就是我们用来测试注册测试的东西。但是,我们没有测试omniauth,因此它可能不是您想要的