Ruby on rails Rspec redirect_跟踪多个重定向
我正在尝试编写一个测试,以确保用户在登录后被重定向到正确的页面。然而,问题是,用户在到达我要检查的页面之前要经历两次重定向。当前正在使用Ruby on rails Rspec redirect_跟踪多个重定向,ruby-on-rails,rspec,Ruby On Rails,Rspec,我正在尝试编写一个测试,以确保用户在登录后被重定向到正确的页面。然而,问题是,用户在到达我要检查的页面之前要经历两次重定向。当前正在使用expect(subject)。若要重定向到(帐户计划页面)将在第一次重定向时停止重定向链,而不会继续到最后一页。因此,登录流程是localhost/signin->localhost/->localhost/account/plan。我想测试用户是否到达/account/plan,但将\u重定向到根路径上的stops。是否有必要让rspec跟随最终重定向,而不
expect(subject)。若要重定向到(帐户计划页面)
将在第一次重定向时停止重定向链,而不会继续到最后一页。因此,登录流程是localhost/signin->localhost/->localhost/account/plan
。我想测试用户是否到达/account/plan
,但将\u重定向到根路径上的stops。是否有必要让rspec跟随最终重定向,而不是在第一个重定向结束
缩写登录规范:
describe 'login', type: :request do
let(:user) { FactoryGirl.create(:user) }
subject { post '/signin', { user: { email: user.email, password: user.password } } }
it 'redirects a user properly' do
accounts_plan_page = 'http://127.0.0.1:3000/account/plan'
if user.account.requires_metered?
expect(subject).to redirect_to(account_plans_page)
end
end
end
这会返回一些与
Expected response to be a redirect to <http://127.0.0.1:3000/account/plan> but was a redirect to <http://127.0.0.1:3000/>
预期响应是重定向到,但却是重定向到
您可以使用post\u via\u redirect
而不是post
来运行测试,从而让您的请求规范遵循重定向
Rspec请求测试是Rails内置集成测试的包装,它有一套更广泛的测试可供使用。谢谢。我能用这个让事情顺利进行。我最后查看了
响应。原始url
,以确定我是否登录到了正确的页面。这是最好的检查方式,还是有其他方法?我想没关系。您还可以查看Rspec的功能测试——它们允许您模拟完整的浏览器交互。