gpt4 book ai didi

ruby-on-rails-3 - 为什么我的 current_user 辅助方法在测试期间不起作用?

转载 作者:行者123 更新时间:2023-12-03 00:20:05 25 4
gpt4 key购买 nike

我有一个 Rails 3.2.3 应用程序,我正在使用 MiniTest 和 Capybara 来运行我的集成测试。我推出了自己的身份验证,并在 application_controller.rb 中创建了 current_user helper_method。

当用户登录时,我的应用程序布局文件仅显示某些链接,例如注销等。

但是 current_user 方法在测试期间不起作用。它看起来像这样:

class ApplicationController < ActionController::Base
protect_from_forgery
private

def authenticate
if current_user.blank?
redirect_to root_url, :alert => "You must first log in."
end
end

def authenticate_admin
unless current_user and current_user.admin?
redirect_to root_url, :alert => "You must be logged in as an administrator to access this feature."
end
end

def current_user
begin
@current_user ||= User.find(session[:user_id]) if session[:user_id]
rescue
nil
end
end

helper_method :current_user
end

所以在我的 application.html.erb 文件中有:

<% unless current_user.blank? %>
<li><%= link_to logout_path %></li>

所以当我通过浏览器测试它时,这是有效的,但在我的测试中却不起作用。 “current_user”最终为零。

我是 BDD 新手,但是有什么东西可以阻止在测试期间创建 session 吗?我错过了什么?

最佳答案

NOTE: helper methods defined in controllers are not included.

来自 here .

解决方案是将它们组织在专用的帮助器类中。

关于ruby-on-rails-3 - 为什么我的 current_user 辅助方法在测试期间不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10676477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com