В моем контроллере есть несколько before_actions. Но мне нужно пропустить конкретное действие before_action для всех тестов. Я не могу делать это в каждом тесте. Это следует сделать на глобальном уровне, возможно, в spec_helper илиrails_helper.
Например:
class SomeController < BaseController
before_action :some_before_action
Запуск каждого теста some_before_action следует игнорировать
🤔 А знаете ли вы, что...
Rails включает в себя множество встроенных инструментов для аутентификации и авторизации пользователей.
Самый простой способ отключить это 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
, безусловно, будет лучшим вариантом.