如何在capybara RSpec测试中关注重定向到子域?

时间:2015-05-21 08:14:09

标签: ruby-on-rails rspec devise capybara

我想测试身份验证机制,成功重定向到子域,例如: 1.登录表单位于http://example.com 2.用户填写表单,如果凭据正确,则重定向到http://zone.example.com

我的控制器操作如下所示:

def create_session
  if User.authorize(params[:user])
     sign_in user
     redirect_to root_url(subdomain: 'zone')
  else
     redirect_to "#{root_url}#email-login-modal?wrong_password=true"
  end
end

集成测试:

context "logging in" do
    before(:all) do
      @password = 'test123456'
    end
    let(:user) {create(:user, password: @password)}
    scenario "by email", js: true do
      visit "/"
      page.find("a[href='#email-login-modal']").click
      within("#login-form") do
        fill_in 'user_email', :with => user.email
        fill_in 'user_password', :with => @password
        find("button[type='submit']").click
      end
      expect(page).to have_content user.name
    end
end

登录在开发中工作,但测试失败,因为Capybara不遵循重定向到子域。

1 个答案:

答案 0 :(得分:2)

这对我使用Rails 5和Capybara Chrome驱动程序:

Rails.application.routes.default_url_options[:host] = 'lvh.me'