0

アプリでコントローラーをテストしています。これは、情報を渡してアクセスを要求したユーザー (「サインインしたゲスト」) に対して 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 は、アプリケーション ヘルパーから取得されます。

前もって感謝します!

4

0 に答える 0