RSpec set session object

前端 未结 4 1365
鱼传尺愫
鱼传尺愫 2020-12-15 03:11

I\'m trying to set a session object from my controller spec.

it \'use invalid coupon\' do
  session[:coupon] = \'abcd\'      
  Service.any_instance.stub(:va         


        
4条回答
  •  再見小時候
    2020-12-15 03:49

    This is explained in the Guide to Testing Rails Applications in section 4 "Functional Tests for your Controllers. The get action takes a params hash and a session hash, e.g.:

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

    You should be able to pass in nil for the params hash in your example, then pass in your desired session parameters:

    get :index, nil, {coupon: 'abcd'}
    

    I recommend a thorough reading of the Rails guide for anyone using RSpec for Rails testing. rspec-rails leverages the existing Rails test classes, a point which is not made very clear in the rspec-rails docs.

提交回复
热议问题