共享上下文的Rspec参数

共享上下文的Rspec参数,rspec,rspec2,rspec-rails,Rspec,Rspec2,Rspec Rails,我想在每个控制器操作中测试用户是否登录 最好的做法是将其晾干,以便我可以在所有的get操作中重复它,即get、show、new、edit 它需要传入get:index、get:new等,并传入用于显示和编辑的参数 以下是非干式版本,只需一个操作: RSpec.shared_context 'when user is not logged in' do before do sign_out :user end it 'GET#index redirects to sign

我想在每个控制器操作中测试用户是否登录

最好的做法是将其晾干,以便我可以在所有的get操作中重复它,即get、show、new、edit

它需要传入get:index、get:new等,并传入用于显示和编辑的参数

以下是非干式版本,只需一个操作:

RSpec.shared_context 'when user is not logged in' do

 before do
    sign_out :user 
  end

  it 'GET#index redirects to sign in page' do   
      get :index       
      expect(response).to redirect_to new_user_session_path
  end
我希望对每个控制器操作执行此操作,而不必复制/粘贴代码


我希望这是清楚的!提前谢谢

我不太确定,但我认为这应该行得通:

RSpec.shared_examples 'when user is not logged in' do |actions|
  before { sign_out :user }

  actions.each do |action|
    it "GET##{action} redirects to sign in page" do   
      get action
      expect(response).to redirect_to new_user_session_path
    end
  end
end

it_should_behave_like 'when user is not logged in', %i(new index)