Rspec 选中“记住我”复选框后,测试用户是否仍然永久连接

Rspec 选中“记住我”复选框后,测试用户是否仍然永久连接,rspec,capybara,Rspec,Capybara,我试图用rspec和capybara测试登录表单,如果用户选中记住我复选框,然后关闭浏览器并再次打开,他仍然连接,我的测试如下: 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 "Remem

我试图用rspec和capybara测试登录表单,如果用户选中
记住我
复选框,然后关闭浏览器并再次打开,他仍然连接,我的测试如下:

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关闭浏览器,但任何解决方案都适用于我,有一种简单的方法可以做到这一点?

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

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

实际上,你需要的是一个gem呼叫。有一个名为
expire\u 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

这个答案不适合你?它给了我一个错误:Capybara::NotSupportedByDriverError:Capybara::Driver::Base#execute(执行)脚本您是否使用诸如
Capybara webkit
之类的JavaScript驱动程序,并且是否设置了
:js=>true
参数?哦,不,我没有用这个,我会尝试它可能的副本