尝试通过Omniauth设置Facebook身份验证回调时,我遇到了一个奇怪的问题。在我的控制器中(简化为显示错误所需的代码)我有:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
raise env.inspect
# auth_hash = env["omniauth.auth"]
end
end
这适用于生产模式,向我显示哈希。但是在测试模式下,env设置为nil。
我的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
在运行我的测试时,有没有人可以告诉我我需要做什么才能保持不变?
答案 0 :(得分:1)
我在 spec_helper.rb 中使用以下内容:
RACK_ENV = ENV['ENVIRONMENT'] ||= 'test'
我不使用Rails或设计虽然如此YMMV。我也看到过各种各样的主题,说有人必须在之前完成这个他们的要求才能让它发挥作用。