Rails 7 および authlogic 6.4.3 のテストでエラーが発生する

概要

認証を必要とするいくつかのコントローラーテストを作成しようとしています。現在、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 から継承する必要があります。