10

セッション変数が正しく変更されたかどうかをテストするrspecを使用してテストを作成しようとしています:

これは、テストしたい GamesController の一部です。

def change_player
  if session[:player] == 0
    session[:player] = 1
  else
    session[:player] = 0
  end    
end

これは私の game_spec.rb ファイルです:

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

これは、テストを実行したときに表示されるエラー メッセージです。

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

ありがとう

4

1 に答える 1

4

問題は、これがコントローラーテストであることをrspecが認識していないことです(spec/controllersフォルダーにありません)

それを指定する必要があります

describe GamesController, :type => :controller do
    ...
end
于 2013-08-10T00:15:27.257 に答える