2

この質問には何度も回答が寄せられていますが、既存の回答では問題が解決されません。

コントローラーの rspec テストを実行したいと考えています。Authlogic を介してユーザーを認証する必要があります。

あなたの多くが (他の同様の質問で) 言ったように、私はspec_helper.rbファイルに追加しました:

require "authlogic/test_case"
include Authlogic::TestCase

events_controller_spec.rbの各前にactivate_authlogic :

...
  before :each do
    activate_authlogic
    user = FactoryGirl.create(:user)
    UserSession.create(user)
  end
...

しかし、rspec を実行すると、悪名高いエラー メッセージが常に表示されます。

Failure/Error: UserSession.create(user)
     Authlogic::Session::Activation::NotActivatedError:
       You must activate the Authlogic::Session::Base.controller with a controller object before creating objects

何が悪いのか分かりますか?

どんな提案でも大歓迎です。

ありがとう!

ps。

使用したバージョン: - rails 3.2 - rspec (2.11.0) - rspec-core (2.11.1)

4

3 に答える 3

3

setup :activate_authlogicまたはAuthlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)の代わりに使用してみてくださいactivate_authlogic、多分それは役立つでしょう

于 2013-02-22T15:16:16.357 に答える
3

解決策が見つかったかどうかはわかりませんが、Rspec コントローラーに使用するコードを次に示します。セッション作成前に無効なユーザーのエラーをキャッチできます!

spec/spec_helper.rb

def log_in(user)
  user.should_not be_nil
  session = UserSession.create!(user, false)
  session.should be_valid
  session.save
end

仕様/コントローラー/...

require 'spec_helper'
require 'authlogic/test_case'

describe xxxController do
  setup :activate_authlogic

  context "user logged" do
    before(:each) do
      @user = Factory(:user)
      log_in(@user)
    end
  end
end
于 2013-02-27T13:42:00.317 に答える
0

多くの試みの後、私は複数の問題を発見しました:

  • FactoryGirl によって作成されたユーザーは有効なユーザーではありませんでした
  • 「before :each」の代わりに「before :all」を試してみたところ、バグ修正にノイズが追加されました

「あまり役に立たない」質問で申し訳ありません:)

于 2013-02-23T19:44:54.960 に答える