私はAPIを開発しており、ログインメソッドをテストしたいと考えていました。 spec/controller
の代わりにspec/api/
にあるAPIの仕様。私はrspec-railsを使用しています。今私はこのような仕様を持っています:API仕様でセッションにアクセス
describe "/api/login.json", :type => :api do
let(:user) { FactoryGirl.create(:user) }
context "when called with correct credentials" do
before(:all) do
post "/api/v1/passenger/login.json",:email => user.email, :password => user.password
end
it "responds with HTTP 200" do
last_response.status.should == 200
end
it "sets the session correctly" do
session[:user_id].should == user.id # <-- ### Here ###
end
end
end
これは失敗します。 session
はゼロです。セッション変数にはどのようにアクセスすればよいですか?
私はRSpec.configure
ブロックにいくつかのものを含める必要があると思いますか?
あなたは 'request.session'を試みる場合がありますが、私はそれが動作するかどうかはわかりません。 – Deradon
'request'は、':type =>:api'テストのために私のヘルパーに含める 'Rack :: Test :: Methods'で定義されたメソッドです。これは 'post'や' get'と似たメソッドで、パラメータとしてURLを必要とします。したがって、 'request.session'は' ArgumentError例外をスローします。例外:引数の数が不正です(0の場合1) ' – iblue
は説明チェーンの上位に記述されているApi :: LoginControllerですか?私はActionController :: TestCase :: Behaviorが混在しているのだろうかと思います。あなたはcontroller.sessionにアクセスできますか? – oliverbarnes