Как пропустить before_action для всех спецификаций рельсов

В моем контроллере есть несколько before_actions. Но мне нужно пропустить конкретное действие before_action для всех тестов. Я не могу делать это в каждом тесте. Это следует сделать на глобальном уровне, возможно, в spec_helper илиrails_helper.

Например:

class SomeController < BaseController
  before_action :some_before_action

Запуск каждого теста some_before_action следует игнорировать

🤔 А знаете ли вы, что...
Rails включает в себя множество встроенных инструментов для аутентификации и авторизации пользователей.


65
2

Ответы:

Решено

Самый простой способ отключить это before_action во всех наших тестах — добавить эту строку в ваш spec/rails_helper.rb:

config.before(:all) do
  allow_any_instance_of(SomeController)
    .to receive(:some_before_action)
    .and_return(true)
end

Рекомендую это только как временное решение, например, при рефакторинге, но не навсегда. Если вы обнаружите, что используете это постоянно, то рефакторинг контроллера и before_action, безусловно, будет лучшим вариантом.


Хорошо, простым решением было добавить before_action :some_before_action, если только Rails.env.test? поскольку это временный код