0

ええ、私はこの質問がばかげていて、初心者で単純であることを知っていますが、まだ理解できません. in app/minions/サードパーティのサービス (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

しかし、それでもうまくいかないようです。

これは、私がやろうとしているよりもはるかに簡単であることはわかっていますが、理解できません。

4

1 に答える 1

1

spec/minions/auth_hash_spec.rbこの新しい仕様 ( ) ファイルの上部に次のようなものを追加します。

require Rails.root.to_s + '/app/minions/myhash.rb'

そして、テストを書きます。

于 2013-09-26T16:05:08.113 に答える