点击“登录”后,我想检查是否加载了正确的页面。按钮。
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
谢谢!
答案 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应该已经提交了一个表单,并且在下一页加载之前,期望不会执行。
至于测试命名 - 将它命名为对你有用的东西,这样你就可以知道它从现在开始的一年。