我有一个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>
所以当我通过浏览器测试它时,这是有效的,但不是在我的测试中。 &#34; CURRENT_USER&#34;最终成为零。
我是BDD的新手,但有什么能阻止在测试期间创建会话吗?我错过了什么?