2012-12-04 18 views
10

rspecimde bir komisyon görevi çağırmaya çalışıyorum.rspec içinde komisyon görevi nasıl çağırılır

require "rake" 
    rake = Rake::Application.new 
    Rake.application = rake 
    rake.init 
    rake.load_rakefile 
    rake['rake my:task'].invoke 

Ama birileri bizi RSpec kodunda tırmık görevi nasıl çağıracak bir fikri var mı hata

Failure/Error: rake['rake db:migrate'].invoke 
RuntimeError: 
    Don't know how to build task 'rake db:migrate' 

alıyorum.

Herhangi bir yardım çok takdir edilecektir.

cevap

3

invoke için köşeli parantez içinde argümanlar geçmek için:

rake sim:manual_review_referral_program[3,4] 

olur:

rake['sim:manual_review_referral_program'].invoke(3,4) 

args vardır Eğer senin bir dizide aşağıdakileri yapabilirsiniz:

args = [3,4] 
rake['sim:manual_review_referral_program'].invoke(*args) 

Daha fazla bilgi için bu StackOverflow soru: How to run Rake tasks from within Rake tasks?.

12

Küçük ad aralığı sorunu, komut satırı kullanımı gibi db:migrate değil rake db:migrate değil.

Yani bu değiştirmeyi yardımcı olmalıdır:

rake['db:migrate'].invoke 
+0

Çok teşekkürler. Çalışıyor. Şimdi 'lib/tasks /' klasöründe tanımlanmış özel komisyon görevim var. Bunu rspec'ten nasıl çalıştırabilirim? Lib/task' klasöründeki '.rake' uzantılı – MKumar

+0

her şey varsayılan olarak dahil edilecektir. Rakefile muhtemelen raylardan geldiği için, görev yüklenmeli ve kullanılabilir olmalıdır. – stuartc

+0

Aşağıdan Başlarken Hata Hata/Hata: rake ['sim: manual_review_referral_program [3]']. çağırma RuntimeError: Nasıl yapılacağını bilemiyorum 'sim: manual_review_referral_program [3]' – MKumar

10

Daha basit RSpec ile Raylar için çözüm: In

senin spec_helper (veya RSpec-ray yeni sürümlerini rails_helper): Görevinizi çağırmak istediğinizde yapabileceğiniz Sonra

require "rake" 
Rails.application.load_tasks 

izleyenler:

Rake::Task['my:task'].invoke 
İlgili konular