Rails:我分别在控制器/视图/请求/功能测试中测试什么?

时间:2015-03-20 07:37:43

标签: ruby-on-rails rspec devise pundit

所以我在Rails中rails g scaffold bar content:string,它产生了很多东西。作为测试的新手,我对每个类别的内容都知之甚少。

首先是上下文:

  • 测试框架是 RSpec
  • 我使用 devise 进行身份验证,使用 pundit 进行授权
  • bar 资源仅允许来自经过身份验证的用户的访问
  • 每位用户仅被授权CRUD自己的 bar 资源

现在问题(我知道了很多,抱歉!):

  1. 如果我已经对我的权威政策进行了单元测试,是否需要在我的控制器规范中测试授权?
  2. 我是否在控制器规格中测试身份验证?或者我应该留下来请求规格?
  3. 是否需要分开的视图测试?我不止一次被告知它没有必要,我应该选择功能规格。
  4. 关于请求规范,我是否需要针对每个操作测试所有3个方案,即未经过身份验证已通过身份验证但未经过授权已授权
  5. 功能测试的范围是什么?我是否测试主要功能或每个角落?

1 个答案:

答案 0 :(得分:0)

我建议在Pundit采取行动方法之后使用verify_authorized和verify_policy_scoped ......

class ApplicationController < ActionController::Base
  include Pundit
  after_action :verify_authorized
end

然后可以实施您的控制器测试以仅测试限制最少的用户(例如,管理员)。

视图和功能测试的策略可能更复杂,因为您可能需要测试用户界面以查找只能由具有特定权限的用户访问的功能。但至少你节省了一些控制器规格的时间!