0

我正在我的应用程序中测试一个控制器,它应该为已提供信息并请求访问权限的用户(“登录的客人”)呈现一个视图,为世界其他地方(匿名用户)呈现另一个视图。我正在使用 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

结尾

但是,当我运行它时,我的 puts 实际上给了我这个:

 Rspec says Current User: nil 

那么......为什么当前用户为零,即使我使用omniauth 模拟创建它?

编辑: current_user 来自我的应用程序助手,如果有帮助的话。

提前致谢!

4

0 回答 0