ruby-on-rails - 更改 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 的解决方案,因为它与其他测试冲突。
解决方案
您不应该在系统测试中直接访问会话。如果您希望用户的会话已注销,请先登录该用户,然后将其注销。这样,浏览器将拥有与已注销会话相对应的 cookie,就像真实用户一样。
推荐阅读
- jquery - JQuery 排队导致 wordpress 未捕获错误
- sql - 将游标变量作为参数传递给过程
- javascript - 为什么我的 Firebase Firestore 安全规则允许对现有文档执行 .set() 操作,但 .set() 缺少字段
- c++ - 为什么 Visual Studio 和 Dev-C++ 不会破坏局部变量而其他 IDE 会:C++
- android - 矢量绘图时nSyncAndDrawFrame慢
- r - 如何使用 sqlite 数据库填充 bigstatsr::FBM 以供以后使用?
- python - 如何对具有不同属性的超类使用超级方法
- php - 为什么 laravel 为我的模型和控制器创建垃圾名称?
- c# - 如何计算包含(相交)圆的内切圆
- css - 日历的引导表