Capybara:测试生成的脚本

时间:2015-03-20 18:02:47

标签: ruby-on-rails ajax rspec capybara

我正在使用ajax更新页面中的关注/取消关注用户。如果用户未登录并且他点击了关注页面,那么他应该重定向到登录页面:

def identify_user
    @user = User.find_by(username: params[:id])
    render js: "window.location = '/'" if @user.nil? || !user_signed_in?
  end

由于跟随按钮设置了remote: true,我无法使用简单的redirect_to。我如何使用水豚进行测试?

scenario "Follow when user is not logged in", js: true do
    sign_up_with("t@test.com","test1","secret12345")
    click_link "logout"
    visit "/test1" #takes to user 'test1' page
    click_link "Follow test1" #link to follow user
    expect(current_path).to eql('/')
  end

上面的代码不起作用,它只是打开我的默认浏览器..好吧 window.location = '/' 处理用户重定向的方法的变化也很受欢迎!

1 个答案:

答案 0 :(得分:0)

您是否可以对页面上的元素使用rspec期望而不是current_path?对于简单地验证URL,这将被证明是一个更强大的测试。类似的东西:

expect(page).to have_css('input#password')