在黄瓜运行测试前运行一次代码

问题描述:

我正在为我的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方法时,它都会再次运行代码,而不是保留之前检索的值。

如何运行此代码一次并保留所有场景的值?

感谢

使用的全局变量:在支持文件夹中的所有文件:

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

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