2
我正在为Facebook集成编写测试。当我运行rspec的,我得到以下错误使用水豚/ Rspec为Facebook测试OAuth
Failure/Error: before { click_link "Sign in with Facebook" }
NoMethodError:
undefined method `provider' for #<Hash:0x007fbe98511798>
# ./app/models/user.rb:55:in `from_omniauth'
我的OAuth模拟包含
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:facebook] = {
'uid' => "999999",
'provider' => "facebook",
'extra' => {
'user_hash' => {
'email' => '[email protected]',
'first_name' => 'First',
'last_name' => 'Last',
'gender' => 'Male'
}
},
'credentials' => {
'token' => "token1234qwert"
}
}
它显然打破了确切地点是
def self.from_omniauth(auth)
where("fb_provider = ? and fb_uid = ?", auth.provider, auth.uid.to_s).first_or_initialize.tap do |user|
但是当我做了puts auth.to_yaml
作为第一行from_omniauth(auth)
它显示provider: facebook
以及我在模拟验证中包含的所有其他内容。我迷失在这一点上。任何建议或帮助,将不胜感激。谢谢。