アプリでコントローラーをテストしています。これは、情報を渡してアクセスを要求したユーザー (「サインインしたゲスト」) に対して 1 つのビューをレンダリングし、残りの世界 (匿名ユーザー) に対して別のビューをレンダリングする必要があります。OmniAuth と Rolify を使用しています。
テストは次のようになります。
context 'signed in guests' do
before do
guest = create(:user,:guest)
OmniAuth.config.mock_auth[:google] = {
uid: guest.uid
}
session[:user_id] = guest.id
end
it "shows the Please Wait for Confirmation view" do
puts "Rspec says Current User: #{@current_user.inspect}"
get :index
response.should render_template :pending_authorization
end
end
ユーザー ファクトリは次のようになります。
FactoryGirl.define do
factory :user do
name "MyString"
email "MyString"
provider "MyString"
uid "MyString"
trait :admin do
after(:create) {|user| user.add_role(:admin)}
end
trait :guest do
after(:create) {|user| user.add_role(:guest)}
end
trait :authorized_user do
after(:create) {|user| user.add_role(:user)}
end
end
終わり
ただし、これを実行すると、プットは実際には次のようになります。
Rspec says Current User: nil
では... omniauth モックで作成したにもかかわらず、現在のユーザーが nil なのはなぜですか?
編集: current_user は、アプリケーション ヘルパーから取得されます。
前もって感謝します!