6

Mam aplikację Ruby 2.1/Rails 3.2, która wykorzystuje potok zasobów. Używamy również delikatnego klejnotu (alfa), który powoduje, że "aktywa rake: prekompilacja" czasami zawodzą. Chciałbym napisać test rspec, który zapewni, że to zadanie rake'a zawsze minie zanim zatwierdzimy nasz kod.Jak przetestować zadanie rake z RSpec?

pisałem test w ciemno/asset_precompile_spec.rb który wygląda tak:

require 'spec_helper' 
require 'rake' 

describe 'assets:precompile' do 
    before { MyApp::Application.load_tasks } 
    it { expect { Rake::Task['assets:precompile'].invoke }.not_to raise_exception } 
end 

Potem prowadził ją w linii komend przy użyciu

rspec spec/lib/assets_precompile_spec.rb 

Sygnał wyjściowy mam wyglądał następująco:

1) assets:precompile 
    Failure/Error: it { expect { Rake::Task['assets:precompile'].invoke }.not_to raise_exception } 
     expected no Exception, got #<RuntimeError: Command failed with status (1): [/home/railsdev/.rvm/rubies/ruby-2.1.2/bin/...]> with backtrace: 
     # ./spec/lib/assets_precompile_spec.rb:7:in `block (3 levels) in <top (required)>' 
     # ./spec/lib/assets_precompile_spec.rb:7:in `block (2 levels) in <top (required)>' 
    # ./spec/lib/assets_precompile_spec.rb:7:in `block (2 levels) in <top (required)>' 

Finished in 0.71247 seconds 
1 example, 1 failure 

Failed examples: 

rspec ./spec/lib/assets_precompile_spec.rb:7 # assets:precompile 

Szukałem daleko & szeroki, i nie mogę znaleźć żadnego przykładu, aby uruchomić „R ake assets: precompile ", który faktycznie działa w moim środowisku RSpec. Próbowałem jawnie ładowanie pliku spec_helper.rb, próbowałem jawnie wymagające "factory_girl", ale nie mogę znaleźć niczego, co działa.

Czy istnieje sposób na wykonanie testu, aby uruchomić to zadanie rake w teście RSpec?

+0

Nie miałem problemu z użyciem podanego kodu. – hmak

+0

Wpadłem na ten sam problem i rozwiązanie @ spr dla mnie zadziałało. – etagwerker

Odpowiedz

2

Spróbuj Rake::Task['assets:precompile:all'].invoke

zamiast Rake::Task['assets:precompile'].invoke

W moim przypadku to pomogło.

+0

Dziękujemy za udostępnienie! To działało dla mnie. – etagwerker

Powiązane problemy