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
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
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With