Authlogicも使用する私のアプリケーションでCanCan機能をテストしようとしています。実際のサイトを使用しているときに正しい動作が動作することを確認しましたが、この動作が将来中断した場合に警告を発する機能テストを作成したいと思います。私の能力ファイルは単純で、次のようになります。UserSessionsControllerため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
私のテストは、シンプルさ、そして次のようになります。ただ、参考のために、私のtest_helper.rbは次のようになります
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
:
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