2013-02-26 196 views
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方法時,它都會再次運行代碼,而不是保留之前檢索的值。

如何運行此代碼一次並保留所有場景的值?

感謝

回答

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

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