結論
テストすべきロジックはモデルとかに書くべきで、直接Rakeタスクをてすとしなきゃいけないってことは何かがおかしい
が、一応メモ
環境
- Rails 5.2
コード
先に全部ロードしておく
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)