开发者

Authlogic and functional tests - Authlogic::Session::Activation::NotActivatedError: You must activate

开发者 https://www.devze.com 2022-12-26 00:27 出处:网络
Im getting the errors below despite following the documentation. In test_helper.rb ENV[\"RAILS_ENV\"] = \"test\"

Im getting the errors below despite following the documentation.

In test_helper.rb

ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require "authlogic/test_case"
require 'test_help'
require 'shoulda'
require File.dirname(__FILE__) + "/factories"

In my functional test require 'test_helper'

class SentencesControllerTest < ActionController::TestCase
  setup do
    :activate_authlogic
  end

  context "logged in" do
    setup do
      @user = Factory(:user)
      UserSession.create(@user.id)
    end

    context "on GET to :new" do
      setup do
        get :new
      end

      should "present form with text field" do
        assert_select('form#new_sentence') do
          assert_select('textarea#sentence_text')
        end
      end
    end
  end #context logged in.
end

in environments.rb

  config.gem "authlogic"

Im not sure why it isnt working. Can anyone help out on this?

Authlogic::Session::Activation::NotActivatedError: You must activate the Authlogic::Session::Base.controller with a controller object before creating objects
authlogic (2.1.3) lib/authlogic/session/activation.rb:47:in `initialize'
    authlogic (2.1.3) lib/authlogic/session/klass.rb:64:in `initialize'
    authlogic (2.1开发者_如何转开发.3) lib/authlogic/session/scopes.rb:79:in `initialize'
    authlogic (2.1.3) lib/authlogic/session/existence.rb:29:in `new'
    authlogic (2.1.3) lib/authlogic/session/existence.rb:29:in `create'
    test/functional/sentences_controller_test.rb:11:in `__bind_1270172858_922804'
    shoulda (2.10.3) lib/shoulda/context.rb:380:in `call'
    shoulda (2.10.3) lib/shoulda/context.rb:380:in `run_current_setup_blocks'
    shoulda (2.10.3) lib/shoulda/context.rb:379:in `each'
    shoulda (2.10.3) lib/shoulda/context.rb:379:in `run_current_setup_blocks'
    shoulda (2.10.3) lib/shoulda/context.rb:371:in `run_all_setup_blocks'
    shoulda (2.10.3) lib/shoulda/context.rb:375:in `run_parent_setup_blocks'
    shoulda (2.10.3) lib/shoulda/context.rb:359:in `test: logged in on GET to :new should present form with text field. '
    /opt/rubymine/rb/testing/patch/testunit/test/unit/ui/testrunnermediator.rb:36:in `run_suite'
    /opt/rubymine/rb/testing/patch/testunit/test/unit/ui/teamcity/testrunner.rb:215:in `start_mediator'
    /opt/rubymine/rb/testing/patch/testunit/test/unit/ui/teamcity/testrunner.rb:191:in `start'


Should:

class SentencesControllerTest < ActionController::TestCase

  setup do
    :activate_authlogic
  end

  ...

be:

class SentencesControllerTest < ActionController::TestCase

  def setup              # setup should be its own method, prefixed with "def"
    activate_authlogic   # note the lack of a ":"
  end

  ...

If, alternatively, you're following the Rails testing tutorial, it may have a single-line setup deal like:

setup :activate_authlogic  # note the USE of a ":" here - not sure why it's different between this and when you put it in its own method but that might be the answer for you
0

精彩评论

暂无评论...
验证码 换一张
取 消