spec/rake_helper.rbを作成する。

テスト全体の設定を記述↓

require 'rails_helper'
require 'rake'
RSpec.configure do |config|
  config.before(:suite) do
    Rails.application.load_tasks # Load all the tasks just as Rails does (`load 'Rakefile'` is another simple way)
  end

  config.before(:each) do
    Rake.application.tasks.each(&:reenable) # Remove persistency between examples
  end
end

spec/lib/tasks/update_task_spec.rbを作成

テスト内容を記述↓

require 'rake_helper'

describe 'update_task:change_state' do
  subject(:task) { Rake.application['update_task:change_state'] }
  before do
    create(:task, state: :doing, published_at: Time.current - 1.week)
    create(:article, state: :doing, published_at: Time.current + 1.week)
    create(:article, state: :do)
  end
  it 'is succeed.' do
    expect{ task.invoke }.to change { Task.time_out.size }.from(0).to(1)
  end
end

subjectに起動したいrakeタスクを指定する。

it内のtask.invokeでrakeタスクの起動をかけて、change以下でtaskの変化をテストする。

今回の例で言えば、

Taskのstateカラムがrakeタスクを起動すれば1つ増えるはずなので、from(0).to(1)で増えることを期待している。

参考

https://qiita.com/aeroastro/items/c97bd26ce8b8818b6bed