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