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