2010-08-13 21 views
8

Quelle est la meilleure façon d'écrire les spécifications relatives à Resque dans RSpec without stubbing the former?Quelle est la meilleure façon d'écrire des spécifications liées à Resque dans RSpec?

Nous utilisons actuellement l'aide suivante:

@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 

très empruntant propre aide de test de Resque, cela fonctionne très bien, mais vomit un zsh: killed rake gênant lorsque l'ensemble de la suite de la spécification est géré par râteau.

Répondre

5

Vous pouvez utiliser la gemme resque_spec http://github.com/leshill/resque_spec. Un tas de matcher pour tester resque.

+1

que les bouchons Resque, ce qui est bien pour les tests unitaires, je suppose, mais je préfère exécuter une instance réelle de Resque à écrire des tests d'intégration plus complexes. Semble que nous aurons à faire avec ce qui précède pour l'instant. –

+1

@HakanEnsari, avez-vous déjà fini par faire quelque chose de différent pour vos spécifications? Je suis en train d'écrire un test qui nécessite l'intégration de resque (en utilisant resque_mailer) et je suis perplexe. – Tass