一个简单的DEVISE注册...为什么这个rspec / capybara测试不通过?

时间:2011-09-24 17:59:43

标签: ruby-on-rails rspec devise capybara

典型的DEVISE创建帐户页面应重定向到新用户的欢迎页面

describe ArtistsController do

  render_views

   ....

describe "Sign UP should redirect to welcome page" do
  it "should redirect to welcome page on valid sign up", :js => true do
    visit destroy_artist_session_path #just to be sure we're logged out
    visit new_artist_registration_path
    fill_in 'Email', :with => 'newguy@newguy.com'
    fill_in 'Password', :with => 'password'
    fill_in 'Password confirmation', :with => 'password'
    click_link_or_button 'Sign up'
    #save_and_open_page <-- reveals we are still on the sign-up page
    page.should have_content("Welcome")

  end
end

我在本地计算机上手动对此方案进行了QA测试,它运行正常。但测试似乎不起作用;它不会继续到欢迎页面。新用户不是在DB中创建的。水豚没有抱怨它无法找到按钮或任何东西。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,它与子域名相关联。

会话密钥是“lvh.me”, 但是测试默认使用“example.com”。

我的测试是正确提交登录表单,用户通过身份验证没有问题,然后Devise重定向到“example.com”域中的主页,并且应用程序无法找到会话数据(在“lvh”下)。我是“密钥”,并且正在重定向回登录页面,没有任何flash消息或错误。

因此,如果您使用的是子域名,请务必在登录用户之前设置Capybara主机。仅举一例,我就是这样做的:

def go_to(subdomain)
  Capybara.app_host = "http://#{subdomain}.lvh.me"
  Capybara.server_port = 3000
  host! "#{subdomain}.lvh.me:3000"
end

答案 1 :(得分:0)

您好像被重定向回登录页面。

  • save_and_open_page容器的输出是否有任何flash消息?
  • 您是否检查过test.log以获取线索?
  • 尝试将Capybara驱动程序设置为机械化,您将能够看到发生的情况 - 它可能有助于追踪问题。