しばらく前に表題の gem を作りました。
中身はただの shared_context です。これは僕のオリジナルな gem ではなくて、thoughtbot 社のブログに書かれた shared_context のコードをほぼそのまま gem にした感じです。毎回 rake タスクをテストするためにブログからコピペしてくるのが面倒になったので作りました。
これを使うと下記のような rake タスクがあったときに
# lib/tasks/reports.rake
namespace :reports do
desc "Generate report"
task :generate => :environment do
ReportGenerator.generate
end
end
下記のような感じで rake タスクのテストを書くことができます。
# spec/lib/tasks/reports_rake_spec.rb
describe "reports:genereate" do
include_context "rake"
before { ReportGenerator.stubs(:generate) }
its(:prerequisites) { should include("environment") }
it "generates the report" do
subject.invoke
ReportGenerator.should have_received(:generate)
end
end
どうぞご利用ください。微妙な点もいくつか残っているので気になったら pull request いただけるとありがたいです。