ruby on rails - RSpec 세션 객체 설정




ruby-on-rails session (2)

컨트롤러 사양에서 세션 개체를 설정하려고합니다.

it 'use invalid coupon' do
  session[:coupon] = 'abcd'      
  Service.any_instance.stub(:validate_coupon).with(session[:coupon]).and_return('abcd')

  get :index
  expect(flash[:coupon__notice]).to be nil
end

하지만 @coupon 객체 대신 세션을 검사 할 때 'coupon'문자열이 포함 된 @data를 얻습니다. 그러면 테스트가 실패합니다.


@request와 같은 객체를 사용할 수도 있습니다.

@request.session['coupon'] = 'abcd'

Rails 5+에서 ActionController::TestCase 사용한다면 session이 키워드 arg로 전달된다.

params와 session을 설정하는 것은 다음과 같습니다 :

get(:show, params: {'id' => "12"}, session: {'user_id' => 5})

세션 만 설정하면

get(:show, session: {'user_id' => 5})

컨트롤러 테스트를위한 새로운 기본값 인 ActionDispatch::IntegrationTest 를 사용하는 경우 세션 변수를 설정할 수 없으며 로그인 플로우를 통해 테스트를 수행하여 설정해야합니다.





rspec