共享上下文的Rspec参数
我想在每个控制器操作中测试用户是否登录 最好的做法是将其晾干,以便我可以在所有的get操作中重复它,即get、show、new、edit 它需要传入get:index、get:new等,并传入用于显示和编辑的参数 以下是非干式版本,只需一个操作:共享上下文的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
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)