如何正确点击按钮后查看页面内容?
How to check page content after button click correctly?
我想检查单击 'sign in' 按钮后是否加载了正确的页面。
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
expect(page).to have_content 'Dashboard' 检查表单所在的同一页上是否有 user.name 单词。那么,click_button 有什么意义呢?如何让它检查应该在 click_button 之后加载的页面内容?顺便说一句,如何正确命名此类测试?
抱歉,如果这是一个愚蠢的问题,我是 rspec 的新手 :c
谢谢!
你必须选择一些用户登录后出现在页面上的内容。你的应用程序是否显示一条消息,说类似 "You are now logged in" 的内容,如果是,你可以这样做
expect(page).to have_content("You are now logged in")
如果没有,它会在 header 栏中显示用户名吗?然后你可以做一些像
预期(页面).to have_css("header",文本:user.name)
等...关键是无论您要搜索什么,都需要出现在下一页上,而不是出现在带有表单的页面上。在这两种情况下,Capybara 将等待 Capybara.default_max_wait_time
秒,同时重新尝试查找文本(假设您使用的是 driver 而不是 rack-test),这应该给下一页时间加载。如果您使用的是 rack-test driver,则没有 JS 或异步支持,click_button 应该已经提交了一个表单,并且 expect 将在下一页加载之前不会执行。
至于测试命名 -- 给它起一个对你有意义的名字,这样你就知道一年后它会做什么。
我想检查单击 'sign in' 按钮后是否加载了正确的页面。
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
expect(page).to have_content 'Dashboard' 检查表单所在的同一页上是否有 user.name 单词。那么,click_button 有什么意义呢?如何让它检查应该在 click_button 之后加载的页面内容?顺便说一句,如何正确命名此类测试? 抱歉,如果这是一个愚蠢的问题,我是 rspec 的新手 :c
谢谢!
你必须选择一些用户登录后出现在页面上的内容。你的应用程序是否显示一条消息,说类似 "You are now logged in" 的内容,如果是,你可以这样做
expect(page).to have_content("You are now logged in")
如果没有,它会在 header 栏中显示用户名吗?然后你可以做一些像
预期(页面).to have_css("header",文本:user.name)
等...关键是无论您要搜索什么,都需要出现在下一页上,而不是出现在带有表单的页面上。在这两种情况下,Capybara 将等待 Capybara.default_max_wait_time
秒,同时重新尝试查找文本(假设您使用的是 driver 而不是 rack-test),这应该给下一页时间加载。如果您使用的是 rack-test driver,则没有 JS 或异步支持,click_button 应该已经提交了一个表单,并且 expect 将在下一页加载之前不会执行。
至于测试命名 -- 给它起一个对你有意义的名字,这样你就知道一年后它会做什么。