動かざることバグの如し

近づきたいよ 君の理想に

RspecでRailsのRakeタスクをテストしたい人生だった

結論

テストすべきロジックはモデルとかに書くべきで、直接Rakeタスクをてすとしなきゃいけないってことは何かがおかしい

が、一応メモ

環境

コード

先に全部ロードしておく

RSpec.configure do |config|
  config.before(:suite) do
    Rails.application.load_tasks
  end
end

で、各describeとかでtaskを定義

let(:task) { Rake.application['batch:hogehoge'] }

最後に実行 よくRakeタスクではtask.invokeが使われるが、Rspecでそれで実行してしまうと2回目以降が実行されないのでexecute()を使用すること

task.execute (edited)