認証を必要とするいくつかのコントローラーテストを作成しようとしています。現在、authlogic 6.4.3とrails 7を使用しています。
問題は、常に次のエラーがスローされることです。
Authlogic::Session::Activation::NotActivatedError: You must activate the Authlogic::Session::Base.controller with a controller object before creating objects
これを setup:activate_authlogic
として追加すると、次のエラーが発生しました: NoMethodError: unknown
method ‘activate_authlogic’ for #
しかし、それをsetup doに変更したところ、エラーはAuthlogic::Session::Activation::NotActivatedError:になりました。
これは私のtest_helper.rbです
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require "authlogic/test_case"
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
#
# Note: You'll currently still have to declare fixtures explicitly in integration tests
# -- they do not yet inherit this setting
fixtures :all
# Add more helper methods to be used by all tests here...
end
# Define active_authlogic into all setup
class ActionController::TestCase
setup do
:activate_authlogic
end
def login(user)
post sesiones_url, :params => { :email => user.email, :password => 'password' }
end
end
これは私のテストです:
require 'test_helper'
class VideosTest < ActionController::TestCase
setup do
@video = video(:one)
end
test "should get new" do
Sesion.create(usuarios(:admin))
get :new
assert_response :success
end
end
これは、認証を必要とする同様のテストでも発生します。
ログイン用のヘルパー メソッドも追加しようとしましたが、次のエラーがスローされます。
ActionController::UrlGenerationError: No route matches {:action=>"http://test.host/sesiones", :controller=>"videos", :email=>"[email protected]", :password=>"password"}
アイデアが尽きてきました
authlogic を使用してテストを作成する正しい方法は何ですか?それともテストで認証をバイパスする方法はありますか?
テストは、ActionController::TestCase ではなく、ActionDispatch::IntegrationTest から継承する必要があります。