How to test via rspec that session variables updated in controller

controller, rspec, ruby-on-rails

Solution

the problem is that rspec doesn't know this is a controller test (is not in `spec/controllers` folder)

you need to specify that

describe GamesController, :type => :controller do
    ...
end

Problem

I am trying to write a test using rspec that tests if the the session variable was correctly changed: This is the part of the GamesController I want to test: ``` def change_player if session[:player] == 0 session[:player] = 1 else session[:player] = 0 end end ``` This is my game_spec.rb file: ``` require "spec_helper" describe GamesController do describe "#change_player" do it "should change player to 1" do session[:player] = 0 get :change_player assigns(session[:player]).should == 1 end end end ``` This is the error message I get when I run the test: ``` Failures: 1) GamesController#change_player should set player to 0 Failure/Error: session[:player] = 0 NameError: undefined local variable or method `session' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x00000103b3b0d8> # ./spec/features/game_spec.rb:6:in `block (3 levels) in <top (required)>' Finished in 0.01709 seconds 1 example, 1 failure Failed examples: rspec ./spec/features/game_spec.rb:5 # GamesController#change_player should set player to 0 ``` Thanks

Original source