ruby-on-rails – 使用Rspec和Capybara在Rails 3中测试会话
发布时间:2020-12-17 04:39:29 所属栏目:百科 来源:网络整理
导读:我正在尝试用rspec,factory_girl和amp;来编写集成测试.水豚.我也安装了黄瓜,但我没有使用它(据我所知). 我基本上想用我的用户预填充数据库,然后转到我的主页并尝试登录.它应该重定向到user_path(@user). 但是,我的/ rspec / requests / integration测试似乎
我正在尝试用rspec,factory_girl和amp;来编写集成测试.水豚.我也安装了黄瓜,但我没有使用它(据我所知).
我基本上想用我的用户预填充数据库,然后转到我的主页并尝试登录.它应该重定向到user_path(@user). 但是,我的/ rspec / requests / integration测试似乎没有持久化会话. 我的规范:/rspec/requests/users_spec.rb require 'spec_helper' describe "User flow" do before(:each) do @user = Factory(:user) end it "should login user" do visit("/index") fill_in :email,:with => @user.email fill_in :password,:with => @user.password click_button "Login" assert current_path == user_path(@user) end end 返回: Failures: 1) User flow should login user Failure/Error: assert current_path == user_path(@user) <false> is not true. # (eval):2:in `send' # (eval):2:in `assert' # ./spec/requests/users_spec.rb:16 相反,它会重定向到我的please_login_path – 如果登录因任何原因失败(或者如果未设置session [:user_id]),则会发生这种情况. 如果我尝试将session.inspect放入,它将作为nil对象失败. 如果我尝试在控制器测试中执行此操作(/rspec/controllers/sessions_spec.rb),我可以毫无问题地访问会话,并且我可以调用session [:user_id] 解决方法
如果你正在使用Devise,你需要包括Warden :: Test :: Helpers(在spec_helper的要求之后是一个好地方),如
in the warden wiki所述.
对session的调用返回nil,因为capybara在作为集成测试运行时不提供对它的访问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |