1

RailsアプリのFacebook統合をテストしています。KoalaのAPIを使用してテストユーザーを作成してから、統合テストを実行したいと思います。

私はこのメソッドを書きました(機能/サポートのkoala.rbで):

def facebook_user
    test_user ||= Koala::Facebook::TestUsers.new(app_id: ENV['FACEBOOK_APP_ID'], secret: ENV['FACEBOOK_SECRET'])
@facebook_user ||= test_user.create(true, 'email')
end

そして、私はそれを一度だけ実行したいです。現在、テストのどこかでfacebook_userメソッドを呼び出すたびに、以前に取得した値を保持するのではなく、コードが再度実行されます。

このコードを一度実行して、すべてのシナリオの値を保持するにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

test_userはローカル変数であり、キャッシュされることはありません。そこの使用||=は何もしません。

結果を別のインスタンス変数にキャッシュする@test_user ||= ...か、次の手順を実行する必要があります。

def facebook_user
  @facebook_user ||= begin
    test_user = Koala::Facebook::TestUsers.new(app_id: ENV['FACEBOOK_APP_ID'], secret: ENV['FACEBOOK_SECRET'])
    test_user.create(true, 'email')
  end
end
于 2013-02-26T16:23:03.603 に答える
0

グローバル変数を使用しました:サポートフォルダー内の任意のファイル:

Before do
    if !$dunit
        $facebook_user = Koala::Facebook::TestUsers.new(app_id: ENV['FACEBOOK_APP_ID'], secret: ENV['FACEBOOK_SECRET']).create(true, 'email')
    $dunit = true  
end

終わり

その後、$facebook_userに自由に電話します

于 2013-02-28T14:54:58.837 に答える