使用rspec测试omniauth回调时设置env

问题描述:

尝试通过Omniauth设置Facebook身份验证回调时出现奇怪问题。在我的控制器(简化为所需的代码显示错误),我有:使用rspec测试omniauth回调时设置env

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def facebook 
    raise env.inspect 
    # auth_hash = env["omniauth.auth"] 
    end 
end 

这部作品在生产模式,显示我的哈希值。然而在测试模式下,env被设置为零。

,我有以下我spec_helper.rb文件

OmniAuth.config.test_mode = true 
OmniAuth.config.add_mock(:facebook, {"credentials" => { 
             "token" => "foo-token" 
             } 
            }) 

设置和我的规格如下所示:

require 'spec_helper' 

describe Users::OmniauthCallbacksController do 

    describe "Facebook" do 

    before(:each) do 
     request.env["devise.mapping"] = Devise.mappings[:user] 
     request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:facebook] 
    end 

    it "should be a redirect" do 
     get :facebook 
     response.should redirect_to(root_path) 
    end 

    end 

end 

任何人都可以见识一下什么我需要做的有包膜不运行我的测试时是否为零?

我用我的spec_helper.rb如下:

RACK_ENV = ENV['ENVIRONMENT'] ||= 'test' 

我不使用Rails的或设计,虽然这样因人而异。我也看到各种线索说有人不得不在之前做这个他们需要得到它的工作。