0

尽管创建了管理员用户会话,但我无法访问需要管理员用户的集成测试中的 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

我在 test.log 中有以下内容:

Unable to load roles_user, underlying cause no such file to load -- roles_user 

正如您所期望的那样,我的固定文件被​​命名为roles_users.yml - 所以不确定如何解决这个问题......

4

3 回答 3

0

您可能还需要在您的课程中添加 include Authlogic::TestCase。从我的应用程序(rspec,但同样的想法)

describe InvitationsController do
  include Authlogic::TestCase
  setup :activate_authlogic

  describe 'sending invitations' do
  .........

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

如果那没有帮助。也许粘贴一些调试输出,也许是对创建的用户的检查。

于 2009-10-28T13:55:33.933 回答
0

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

代替:

assert UserSession.create(users(:admin))

和:

post 'user_session', :user_session => {:email => 'someone@example.com', :password => 'password'}
于 2009-11-04T03:41:30.753 回答
0

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

发生这种情况是因为您没有登录。尝试:

get "news_items/new", {}, { 'user_id' => 0 }

或者用户 id 实际上是什么。

第一个哈希是请求哈希,第二个是会话哈希。

于 2009-10-28T13:14:44.703 回答