0

我正在使用 RSpec 来测试 Rails 中的控制器行为。我的期望之一是以下情况:

  1. 用户尝试使用 params 访问受保护(需要登录)的 url /home?val=123
  2. 该用户被重定向到登录页面。
  3. 登录后,用户应重定向回最初请求的 URL,并带有相关参数。

我正在为我的身份验证系统使用设计(使用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

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

4

1 回答 1

1

Luacassus 看起来他有一个不错的答案,但你看过 Capybara 的请求测试吗?

这里有一个关于Rails Casts的非常不错的教程。

这基本上就是我们用来测试注册测试的内容。但是,我们没有测试omniauth,所以它可能不是您正在寻找的。

于 2012-11-21T10:18:40.930 回答