我正在编写黄瓜测试来测试用户“记住我”类型的功能,为了在现实生活中这样做,用户将关闭浏览器,重新打开浏览器,然后返回网站。
到目前为止我的测试看起来像这样:
Scenario: 'Remember me' checked
Given I have checked "Remember me"
And I am logged in as "test@test.com"
When I close and re-open my browser
And I come back to the dashboard
Then I should be on the dashboard
但是我不知道在“当我关闭并重新打开浏览器”步骤定义时要填写什么。
有谁知道我会怎么做(或者如果这不是我应该做的,我应该如何测试呢?)
答案 0 :(得分:2)
添加到gem 'show_me_the_cookies'
的捆绑包,然后在World(ShowMeTheCookies)
features/support/env.rb
然后定义一个步骤:
When /^I reopen the browser$/ do
expire_cookies
visit [ current_path, page.driver.request.env['QUERY_STRING'] ].reject(&:blank?).join('?')
end
答案 1 :(得分:1)
也许创建第二个Capybara会话? http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Session
答案 2 :(得分:1)
您可以清除Cookie。
When /^I clear cookies$/ do
browser = Capybara.current_session.driver.browser
browser.manage.delete_all_cookies
end
答案 3 :(得分:1)
答案 4 :(得分:0)
我试图测试同样的事情,让它像这样工作:
When(/^I close and reopen the browser$/) do
# Get cookies we want to keep
remember_me_cookie = page.driver.browser.manage.cookie_named('remember_user_token')
# Close the window and delete the cookies
page.driver.quit
# Reopen the window
page.driver.switch_to_window(page.driver.current_window_handle)
# Go to our domain and add our cookies back in
visit('/')
remember_me_cookie.nil? ? @current_user = nil : page.driver.browser.manage.add_cookie(remember_me_cookie)
# Refresh the domain to activate the cookies
visit('/')
end
一些事情:
page.driver.quit
删除了Cookie,这就是为什么我要用饼干跳舞page.driver.close_window(page.driver.current_window_handle)
关闭窗口,然后使用page.driver.switch_to_window(handle)
切换回来但不起作用page.driver.close_window(page.driver.current_window_handle)
关闭窗口,然后切换到新窗口page.driver.switch_to_window(page.driver.open_new_window)
,但这不起作用我觉得我并不真正了解browser
/ window
关系在Capybara中是如何运作的。此外,似乎复制cookie有点欺骗我的集成测试。希望在未来版本中有更好的方法来实现所有这些。