6

我有一個使用資產管道的Ruby 2.1/Rails 3.2應用程序。我們也在使用導致「rake資產:預編譯」的脆弱(alpha)gem有時會失敗。我想寫一個rspec測試,確保在我們提交代碼之前,這個rake任務總是通過。如何使用RSpec測試rake任務?

我寫規範/測試asset_precompile_spec.rb它看起來像這樣:

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 

我然後跑它使用

rspec spec/lib/assets_precompile_spec.rb 

我得到了這個樣子輸出在命令行:

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 

我已經遠遠地望着&寬,我無法找到任何例如運行「R ake資產:預編譯「,這實際上在我的RSpec環境中起作用。我已經嘗試明確加載spec_helper.rb文件,我已經明確要求「factory_girl」,但我找不到任何可用的工具。

有沒有辦法讓測試在RSpec測試中運行這個rake任務?

+0

我沒有使用您提供的代碼的問題。 – hmak

+0

我遇到了同樣的問題,@ spr的解決方案爲我工作。 – etagwerker

回答

2

嘗試Rake::Task['assets:precompile:all'].invoke

,而不是Rake::Task['assets:precompile'].invoke

對我來說,它幫助。

+0

感謝您的分享!這對我有效。 – etagwerker