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

使用全局变量:在支持文件夹中的任何文件上:

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 回答
0

test_user是一个局部变量,从不缓存。使用||=there 没有任何作用。

您需要将结果缓存在另一个实例变量中@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 回答