2010-08-13 2 views
8

Каков наилучший способ записи спецификаций, связанных с Resque, в RSpec without stubbing the former?Каков наилучший способ записи спецификаций, связанных с Resque, в RSpec?

В настоящее время мы используем следующий вспомогательный:

@dir = File.dirname(File.expand_path(__FILE__)) 

def start_redis 
    `redis-server #{@dir}/redis-test.conf` 
    Resque.redis = "localhost:9736" 
end 

def stop_redis 
    `rm -f #{@dir}/dump.rdb` 
    pid = `ps -A -o pid,command | grep [r]edis-test`.split(" ")[0] 
    Process.kill("KILL", pid.to_i) 
end 

Rspec.configure do |config| 
    config.before(:suite) do 
    start_redis 
    end 

    config.after(:suite) do 
    stop_redis 
    end 

    config.before(:each) do 
    Resque.redis.flushall 
    end 
end 

Крупное заимствование из собственного тестового помощника Resque, это работает отлично, но извергает раздражает zsh: killed rake, когда вся спецификация люкс пробежать грабли.

ответ

5

Вы можете использовать драгоценный камень resque_spec http://github.com/leshill/resque_spec. Букет созревания для проверки resque.

+1

Это тушит Resque, который прекрасно подходит для модульного тестирования, я полагаю, но я предпочитаю, чтобы запустить реальный экземпляр Resque к написать более сложные интеграционные тесты. Кажется, что мы должны будем сделать это выше. –

+1

@HakanEnsari, ты когда-нибудь делал что-то другое для своей спецификации? Я в процессе написания теста, который требует интеграции resque (с использованием resque_mailer), и я в тупике. – Tass