0

我正在尝试使用 rspec 和 capybara 测试登录表单,如果用户选中remember me复选框然后他关闭浏览器并再次重新打开它,他仍然连接,这里我的测试看起来像:

it "still connected if remember me is checked" do
    user = FactoryGirl.create(:user)
    fill_in "Email", with: user.email
    fill_in "Password", with: user.password
    check "Remember me"
    click_button submit
    page.should have_link("sign out", signout_path)

    # here i should do something to close the browser

    visit signin_path
    page.should have_link("Sign out", signout_path)
end

我正在搜索如何使用 capybara 关闭浏览器,但任何解决方案都适合我,有一种简单的方法可以做到这一点吗?

4

2 回答 2

1

您实际上不需要关闭浏览器来删除会话。在测试中,您可以让服务器清除它。

it "still connected if remember me is checked" do
    user = FactoryGirl.create(:user)
    fill_in "Email", with: user.email
    fill_in "Password", with: user.password
    check "Remember me"
    click_button submit
    page.should have_link("sign out", signout_path)

    controller.reset_session

    visit signin_path
    page.should have_link("Sign out", signout_path)
end
于 2014-08-08T13:38:32.097 回答
0

您实际上需要的是一个 gem 调用show_me_the_cookies。有一个方法叫做expire_cookies,你可以模拟关闭浏览器和打开浏览器的动作。

所以对于你的场景:

it "still connected if remember me is checked" do
   user = FactoryGirl.create(:user)
   fill_in "Email", with: user.email
   fill_in "Password", with: user.password
   check "Remember me"
   click_button submit
   page.should have_link("sign out", signout_path)

   # here i should do something to close the browser
   expire_cookies

   visit signin_path
   page.should have_link("Sign out", signout_path)
end
于 2016-03-18T12:22:50.063 回答