Edited at

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

More than 5 years have passed since last update.

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のテストユーザ作成がコケると、以降のテストが全部失敗すること。