我正在为我的rails应用测试facebook集成。我想使用Koala的API创建一个测试用户,然后运行我的集成测试。
我写了这个方法(在feature / support中的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 :(得分: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
答案 1 :(得分: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