【问题标题】:Change Rails session for tests with Capybara更改 Rails 会话以使用 Capybara 进行测试
【发布时间】:2020-02-27 13:29:06
【问题描述】:

如果用户没有使用 Capybara 系统测试登录,我需要在我的 Rails 5.2 应用程序中测试一个显示当前购物车的页面。该应用程序通过保存在 rails 会话中的card_id 检索购物车 (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-rails testing capybara system-testing


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 2023-03-13
      • 2017-05-18
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      相关资源
      最近更新 更多