使用带有默认驱动程序的rspec工作正常并且所有测试都通过了。
更改driver: :webkit
会产生不良副作用。
所以要么在第一个visit root_path
之后,要么在第二个之前,会话被杀死或者其他什么 - 我们无法让用户保持登录状态。
测试看起来像这样
scenario 'something', driver: :webkit do
user = FactoryGirl.create :user
login_as(user)
visit root_path
visit root_path
end
这是一个已知的错误吗?有没有解决方法或我们错过了什么?
按要求:
def login_as(user)
visit root_path
click_on "Login"
fill_in "user[login]", with: user.username
fill_in "user[password]", with: user.password
click_on "Sign in"
end
答案 0 :(得分:1)
默认驱动程序同步运行所有内容---使用真实浏览器并支持javascript的驱动程序不一定同步执行任务 - 因此可以在除了机架测试之外的驱动程序中进行click_on'登录&# 39;马上回来因此,如果您没有检查成功时会看到的内容,则可以立即执行下一次访问root_path并取消登录表单的提交。要解决这个问题,请添加类似
的内容expect(page).to have_content('You are now logged in') # whatever text is shown on a successful login
作为login_as方法的最后一行。对于大多数人来说这通常不是问题,因为在登录下一步后通常是点击页面上的某些内容,这将使Capybara等待该项目出现,从而等待登录完成。
如果这不是这里发生的事情,那么唯一可以记录用户的地方(给出您的示例代码)是您自己的应用
答案 1 :(得分:0)
如果您在第一次访问后删除会话,则预计用户注销。
没有会话访问是否意味着以匿名方式访问该页面?