2013-02-26 1 views
1

Я тестирую интеграцию facebook для моего приложения rails. Я хочу создать тестового пользователя после использования API Koala, а затем запустить тесты интеграции.код запуска один раз до того, как огурец запускает свои тесты

Я написал этот метод (в 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