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