我正在使用 RSpec 为 Rails 项目追溯编写一些测试。
我正在使用 CanCan gem 来提供授权。我决定编写一个规范来测试ability.rb
模型。然后我继续测试我剩下的模型。
我已经转向控制器,但我遇到了一个巨大的障碍:我正在重新测试我的能力!
基本上,我必须剔除一系列模型,并剔除它们的关联;否则响应只会返回403 Forbidden
。
这样做的原因是,控制器基本上负责担心授权。
我不太确定从这里去哪里。我最多删除 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
谢谢,
罗比