我有一个使用资产管道的 Ruby 2.1/Rails 3.2 应用程序。我们还使用了一个脆弱的 (alpha) gem,它有时会导致“rake assets:precompile”失败。我想编写一个 rspec 测试,以确保在我们提交代码之前这个 rake 任务总是通过。
我在 spec/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
我已经看得很远了,我找不到任何运行“rake assets:precompile”的例子,它实际上在我的 RSpec 环境中工作。我尝试过显式加载 spec_helper.rb 文件,我尝试过明确要求“factory_girl”,但我找不到任何有效的东西。
有没有办法让测试运行这个 rake 任务在 RSpec 测试中运行?