【问题标题】:Rails: what do I test in controller/view/request/feature tests respectively?Rails:我分别在控制器/视图/请求/功能测试中测试什么?
【发布时间】:2015-03-20 07:37:43
【问题描述】:

所以我在 Rails 中rails g scaffold bar content:string,它会生成很多东西。作为一个测试新手,我不知道在每个类别中放置什么。

先了解一下上下文:

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

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

  1. 如果我已经对我的 Pundit 策略进行了单元测试,是否需要在我的控制器规范中测试授权?
  2. 我是否在控制器规范中测试身份验证?还是我应该把它留给要求规格?
  3. 是否需要分离视图测试?我不止一次被告知这没有必要,我应该只使用功能规范。
  4. 关于请求规范,我是否需要为每个操作测试所有 3 个场景,即未认证已认证但未授权已授权
  5. 功能测试的范围是什么?我是测试主要功能还是测试每个角落案例?

【问题讨论】:

    标签: ruby-on-rails rspec devise pundit


    【解决方案1】:

    我建议在 Pundit 的操作方法之后使用 verify_authorized 和 verify_policy_scoped...

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多