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」は結局nilになります。
私は BDD を初めて使用しますが、テスト中にセッションが作成されないようにするものはありますか? 私は何が欠けていますか?