Ruby on rails 过滤器前集成测试Authlogic:需要\u管理\u用户问题

Ruby on rails 过滤器前集成测试Authlogic:需要\u管理\u用户问题,ruby-on-rails,integration-testing,authlogic,Ruby On Rails,Integration Testing,Authlogic,尽管创建了管理员用户会话,但我无法访问集成测试中需要管理员用户的URL。我的测试因302错误而失败 class NewsItemsController < ApplicationController before_filter :require_admin_user, :except => [:show, :index, :feed] etc... end --test/inetgration/admin_stories.rb -- require 'test

尽管创建了管理员用户会话,但我无法访问集成测试中需要管理员用户的URL。我的测试因302错误而失败

class NewsItemsController < ApplicationController
    before_filter :require_admin_user, :except => [:show, :index, :feed]

    etc...

end

--test/inetgration/admin_stories.rb --

require 'test_helper'

class AdminStoriesTest < ActionController::IntegrationTest

  fixtures :all
    setup :activate_authlogic

  # if user is an admin he can create a new news_item
    def test_creating_a_news_item
        assert UserSession.create(users(:admin))
        get "news_items/new"
        assert_response :success
        #etc...
    end
end

我的fixtures文件名为roles_users.yml,正如您所期望的那样-因此不确定如何解决此问题…

我认为新操作正在重定向到登录屏幕

这是因为您未登录。尝试:

get "news_items/new", {}, { 'user_id' => 0 }
或者用户id实际上是什么


第一个散列是请求散列,第二个是会话散列。

您可能还需要将include Authlogic::TestCase放入类中。来自我的应用程序(rspec,但想法相同)

您的应用程序是否需要激活用户?如果是,这个用户是谁


如果那没用的话。可能粘贴一些调试输出,可能检查创建的用户

我在集成测试中也遇到了Authlogic问题,下面的修复(来自)对我来说是一个成功的解决方法

替换:

assert UserSession.create(users(:admin))
与:


获取“news\u items/new”{},{'user\u id'=>'1'}没有帮助-仍然获取302错误事实上,这是用于restful\u身份验证您有角色用户模型吗?没有,我有角色和用户之间的habtm关联
describe InvitationsController do
  include Authlogic::TestCase
  setup :activate_authlogic

  describe 'sending invitations' do
  .........
assert UserSession.create(users(:admin))
post 'user_session', :user_session => {:email => 'someone@example.com', :password => 'password'}