是的,我知道这个问题很愚蠢,新手和简单,但我仍然无法弄清楚。我创建了一个类(in app/minions/
目录)来解析来自 3rd 方服务(如 google、twitter 等)的身份验证哈希。它看起来像这样。
class AuthHash
def initialize(hash)
@hash = hash
@provider = hash[:provider]
@uid = hash[:uid]
create_user_hash
end
def create_user_hash
@user_hash = send("parse_hash_from_" << @hash[:provider], @hash)
end
def credentials
{provider: @provider, uid: @uid}
end
def user_hash
@user_hash
end
private
# parse_hash_from_* methods here
end
我已经将该目录添加到自动加载路径中,所以我可以在我的控制器中使用它。现在我想为它写一些测试。
我正在使用带有 FactoryGirl 的 RSpec 进行测试。因此,我首先将工厂添加到spec/factories/
被调用auth_hashes.rb
,但我无法将哈希定义为工厂中的字段。所以我把声明移到了spec/minions/auth_hash_spec.rb
.
require 'spec_helper'
describe AuthHash do
before_each do
auth_hash = AuthHash.new({:provider=>"google_oauth2",:uid=>"123456789",:info=>{:name=>"JohnDoe",:email=>"john@company_name.com",:first_name=>"John",:last_name=>"Doe",:image=>"https://lh3.googleusercontent.com/url/photo.jpg"},:credentials=>{:token=>"token",:refresh_token=>"another_token",:expires_at=>1354920555,:expires=>true},:extra=>{:raw_info=>{:id=>"123456789",:email=>"user@domain.example.com",:verified_email=>true,:name=>"JohnDoe",:given_name=>"John",:family_name=>"Doe",:link=>"https://plus.google.com/123456789",:picture=>"https://lh3.googleusercontent.com/url/photo.jpg",:gender=>"male",:birthday=>"0000-06-25",:locale=>"en",:hd=>"company_name.com"}}})
end
end
但它似乎仍然不起作用。
我知道这应该比我尝试做的要简单得多,但我无法弄清楚。