我想在我的应用中使用Authlogic测试CanCan能力。我已经验证了使用实际站点时的正确行为,但我想编写一个功能测试,以便在将来此行为发生中断时提醒我。我的能力文件是简单,看起来如下:CanCan能力失败的功能测试
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :read, User
can :manage, User, :id => user.id
cannot :create, User
can :destroy, UserSession
if user.role? :guest
can :create, UserSession
cannot :destroy UserSession
end
end
end
我对UserSessionsController测试也很简单,看起来像这样:
test "should redirect new for member" do
default_user = login :default_user
assert default_user.role? :member
assert_raise(CanCan::AccessDenied) { get :new }
assert_redirected_to root_path
end
仅供参考,我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
fixtures :all
setup :activate_authlogic
def login(user_login)
UserSession.create users(user_login)
users(user_login)
end
end
当我运行我的代码,我的测试失败,但是,:
test_should_redirect_new_for_member FAIL
CanCan::AccessDenied expected but nothing was raised.
Assertion at test/functional/user_sessions_controller_test.rb:13:in `block in <class:UserSessionsControllerTest>'
如果我注释掉assert_raise,重定向断言也失败。有没有人看到我的代码导致此测试失败的任何错误?
你的控制器在哪里? – Zabba