Twi*_*ceB 3 ruby rspec ruby-on-rails pundit
我在我的封闭系统Ruby on Rails应用程序上使用Pundit gem进行授权(使用Rails 4.1.5和Rspec 3.0)
我已经将我的应用程序策略配置为在未按照Pundit文档中的建议定义用户时引发异常:
class ApplicationPolicy
attr_reader :user, :record
def initialize(user, record)
raise Pundit::NotAuthorizedError, "must be logged in" unless user
@user = user
@record = record
end
end
Run Code Online (Sandbox Code Playgroud)
如何编写一个规范来验证每个Pundit策略是否拒绝零用户?
我做了以下尝试:
RSpec.describe PostPolicy do
it "should raise an exception when users aren't logged in" do
expect(AccountFolderPolicy.new(nil, record)).to raise_error(Pundit::NotAuthorizedError)
end
end
Run Code Online (Sandbox Code Playgroud)
但它出错了
Failure/Error: expect(PostPolicy.new(nil, record)).to raise_error(Pundit::NotAuthorizedError)
Pundit::NotAuthorizedError:
must be logged in
Run Code Online (Sandbox Code Playgroud)
关于如何正确测试这个的任何建议?
RSpec无法在后台捕获错误,除非您使用raise_error以下块形式的匹配器expect:
RSpec.describe PostPolicy do
it "should raise an exception when users aren't logged in" do
expect do
AccountFolderPolicy.new(nil, record)
end.to raise_error(Pundit::NotAuthorizedError)
end
end
Run Code Online (Sandbox Code Playgroud)
另外
RSpec.describe PostPolicy do
it "should raise an exception when users aren't logged in" do
expect { AccountFolderPolicy.new(nil, record) }.to raise_error(Pundit::NotAuthorizedError)
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1140 次 |
| 最近记录: |