首页 > 解决方案 > 更改 Rails 会话以使用 Capybara 进行测试

问题描述

如果用户未使用 Capybara 系统测试登录,我需要在我的 Rails 5.2 应用程序中测试显示当前购物车的页面。card_id该应用程序通过保存在 rails 会话中检索购物车(session[:cart_id] = @cart.id)

我的测试如下所示:

require 'application_system_test_case'

class CartUiTest < ApplicationSystemTestCase
  def setup
    @cart = create(:cart)
  end

  test 'show cart also if user is not logged' do
    visit edit_cart_path

    assert_text "Some text"
  end
end

如何在此测试中设置会话?我已经尝试过 gem rack_session_access但我正在寻找另一个不使用这个 gem 的解决方案,因为它与其他测试冲突。

标签: ruby-on-railstestingcapybarasystem-testing

解决方案


您不应该在系统测试中直接访问会话。如果您希望用户的会话已注销,请先登录该用户,然后将其注销。这样,浏览器将拥有与已注销会话相对应的 cookie,就像真实用户一样。


推荐阅读