按钮正确点击后如何检查页面内容?

时间:2016-05-19 16:35:07

标签: ruby-on-rails rspec capybara

点击“登录”后,我想检查是否加载了正确的页面。按钮。

users_spec.rb

before :each do
  user = User.create(:email => 'admin@cm.com', :password => '123')
end

it "signs me in" do
  visit '/users/sign_in'
  within("#new_user") do
    fill_in 'Email', :with => 'admin@cm.com'
    fill_in 'Password', :with => '123'
    click_button 'Sign in'
  end
  expect(page).to have_content '#{user.name}' 
end

期待(页面).to_content'仪表板'检查是否在表单所在的同一页面上有user.name字。那么,click_button的含义是什么呢?如何检查应加载AFTER click_button的页面上的内容?那么,如何正确命名这样的测试? 对不起,如果这是一个愚蠢的问题,我是rspec的新手:c

谢谢!

1 个答案:

答案 0 :(得分:0)

用户登录后,您必须选择页面上显示的一些内容。您的应用是否会显示“您现在已登录”的消息,如果可以的话

expect(page).to have_content("You are now logged in")

如果没有,它是否在标题栏中显示用户名?然后你可以做类似

的事情

expect(page).to have_css(“header”,text:user.name)

等......关键是你要搜索的内容需要出现在下一页而不是带有表单的页面上。在这两种情况下,Capybara将重试Capybara.default_max_wait_time秒,同时重试查找文本(假设您使用的是机架测试以外的驱动程序),这应该会给下一页加载时间。如果您正在使用机架测试驱动程序,那么没有JS或异步支持,click_button应该已经提交了一个表单,并且在下一页加载之前,期望不会执行。

至于测试命名 - 将它命名为对你有用的东西,这样你就可以知道它从现在开始的一年。