Railsプロジェクト用に、RSpecを使用していくつかのテストをさかのぼって作成しています。
CanCangemを使用して認証を提供しています。ability.rbモデルをテストするスペックを書くことにしました。その後、残りのモデルをテストしました。
私はコントローラーに移りました、そして私は巨大な障害に遭遇しました:私は自分の能力をもう一度テストしています!
基本的に、私は一連のモデルをスタブ化し、それらの関連付けをスタブ化する必要があります。それ以外の場合、応答は単にを返します403 Forbidden。
その理由は、基本的にはコントローラーが認証の心配をしているからです。
ここからどこへ行けばいいのかよくわかりません。1つのテストを作成するために、最大6つのモデルをスタブします。私は能力が機能することを知っています、それがability_spec.rb目的です。
したがって、この質問は実際には2つあります。
- 能力モデルを個別にテストする必要がありますか?
- コントローラのテストは適切な権限に関係する必要がありますか?
Edit require'spec_helper' include Devise :: TestHelpers#スペックにヘルパーへのアクセスを許可する
describe TokensController do
before(:each) do
@mock_user = User.new(:username => "bob", :email => "user@user.com", :password => "longpassword")
@mock_user.role = "admin"
sign_in @mock_user
#Ability.stub!('can').and_return(true)
end
it "should let me see grids/:g_id/tokens index" do
test_grid = mock_model(Grid)
test_token = mock_model(Token)
Grid.stub!(:find).and_return(test_grid)
Token.stub!(:find).and_return(test_token)
get 'index'
a1 = Ability.new(@mock_user)
a1.can?(:index, Token).should be_true # This line works fine; as it should
puts response.status #This returns 403, which means CanCan::AccessDenied was raised
end
end
ありがとう、
ロビー