2010-08-13 11 views
8

Was ist die beste Möglichkeit, Resque-bezogene Spezifikationen in RSpec without stubbing the former zu schreiben?Was ist der beste Weg, Resque-bezogene Spezifikationen in RSpec zu schreiben?

Wir verwenden derzeit die folgenden Helfer:

@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 

Stark aus Resque eigenem Test Helfer leihen, das funktioniert gut, aber ein lästiges zsh: killed rake spuckt, wenn die gesamte spec Suite durch Rechen ausgeführt wird.

Antwort

5

Sie können das Resque_spec Gem http://github.com/leshill/resque_spec verwenden. Ein Haufen Matcher, um das Resque zu testen.

+1

Das Resque Stümpfe, die für Unit-Tests in Ordnung ist nehme ich an, aber ich ziehe es eine tatsächliche Instanz von Resque laufen zu schreibe komplexere Integrationstests. Scheint, wir werden mit dem oben genannten für jetzt zu tun haben. –

+1

@HakanEnsari, hast du jemals etwas anderes für deine Brille gemacht? Ich bin dabei, einen Test zu schreiben, der die Integration von resque erfordert (mit resque_mailer) und ich bin ratlos. – Tass