LoginSignup
10
10

More than 5 years have passed since last update.

facebook絡みの動作をテストする

Last updated at Posted at 2012-12-25

facebookでOAuth認証をして。。。なんて動作をテストする時、
コントローラのrspecではkoalaを使ってこんな感じでテストユーザを作成する。

test_controller_spec.rb
  before(:all) do

    # DatabaseClearnerを使ってDBを初期化
    DatabaseClearner.clean

    # テストユーザ作成のためのインスタンスをつくる
    @test_users = Koala::Facebook::TestUsers.new(
      :app_id => OmniAuthConfig::FACEBOOK_API_KEY,
      :secret => OmniAuthConfig::FACEBOOK_SECRET_API_KEY
    )

    # 何人のユーザと友だち関係にいるか
    number_of_networks = 5
    # 指定したアプリに登録しているかどうか
    installed_status = true
    # アプリの権限
    permissions = 'publish_stream'

    networks = @test_users.create_network(
      number_of_networks,
      installed_status,
      permissions
    )

    @target = nil # 後のテストの為に、特定のユーザだけピックアップしておく
    networks.each do |obj|
      @target = obj if @target.nil?
      # optionanl: 特殊な情報が必要であれば、graphインスタンスを生成して自分の情報を取得
      graph = Koala::Facebook::API.new obj["access_token"]
      u = graph.get_object("me")
      # optional: 必要であれば、DBに情報を格納
      User.create(
        :fb_id => u["id"],
        :name  => u["name"]
      )
    end
  end

  after(:all) do
    # 作成したテストユーザをすべて削除
    @test_users.delete_all
  end

難点は、テストユーザの作成に時間がかかるのと、facebookのテストユーザ作成がコケると、以降のテストが全部失敗すること。

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10