セッションコントローラーをテストする方法を確認するためにこの回答を見て、次のようなものを書きました:
require 'spec_helper'
describe SessionsController do
context "We should login to the system and create a session" do
let :credentials do
{:user_name => "MyString", :password => "someSimpleP{ass}"}
end
let :user do
FactoryGirl.create(:user, credentials)
end
before :each do
post :create , credentials
end
it "should create a session" do
puts user.inspect
puts session[:user_id]
#session[:user_id].should == user.id
end
end
end
それに基づいて、工場の女の子のユーザーを作成しました。
FactoryGirl.define do
factory :user, :class => 'User' do
name "sample_user"
email "MyString@gmail.com"
user_name "MyString"
password "someSimpleP{ass}"
end
end
これですべてが機能します -before :each do
ステートメントを実行してください - 「ユーザー」を「ログイン」させることはありません - したがって、コントローラーの機能をテストできません。セッションは適切に作成されていますか?
ほとんどの人は、カピバラを使用してその方法でテストすると言うでしょう-しかし、それは間違っています、IMO-動作するフロントエンドテストを行っているかどうかは確かですが、コントローラーベースのロジックをテストしています. これが機能しない理由を教えてもらえますか? ルーティングは正常に機能します。
私puts session[:user_id]
はゼロに近づいています。