4
我有一個Rails 3.2.3應用程序,我正在使用MiniTest和Capybara來運行我的集成測試。我推出了自己的身份驗證,並在我的application_controller.rb中創建了一個current_user helper_method。爲什麼在測試過程中我的current_user輔助方法不工作?
我的應用程序佈局文件只顯示某些環節,如註銷等,當用戶登錄。
但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,但是有什麼可以防止在測試過程中創建會話?我錯過了什麼?
謝謝!我想這同樣適用於MiniTest。但會話散列呢?這是可用的還是我必須在我的登錄助手中創建一個?我會給它一個鏡頭並回報。 – AKWF