如何在所有Rails测试中全局跳过指定before_action
全局跳过控制器指定before_action的测试配置
可以在rails_helper.rb或spec_helper.rb中做全局配置,不用在每个测试用例里单独设置,就能让所有测试跳过目标控制器的指定before_action。
具体实现方式
- 针对单个控制器跳过指定前置动作:
在RSpec的全局配置块中添加代码,精准匹配目标控制器:RSpec.configure do |config| config.before(:each, type: :controller) do if controller.is_a?(SomeController) controller.skip_before_action :some_before_action end end end - 针对所有控制器跳过同名前置动作:
如果多个控制器都有同名的some_before_action,且都需要在测试中跳过,直接去掉控制器判断即可:RSpec.configure do |config| config.before(:each, type: :controller) do controller.skip_before_action :some_before_action end end
原理说明
借助RSpec的全局前置钩子,在每个控制器类型的测试用例执行前,调用控制器实例的skip_before_action方法,直接跳过指定的前置动作逻辑,达到全局生效的效果。
内容的提问来源于stack exchange,提问作者Tanas
相关产品推荐
相关产品推荐

