Rails
RSpec
chanko

プロトタイプ開発用gemのChankoで、RSpecで機能unitを制御してテストする

私の担当しているRailsの製品で、機能ごとのリリース管理をシンプルにしたいということで、Chankoの導入を検討しました。
結局のところ導入は見送りましたが、ChankoでRSpecを使う点で試行錯誤したメモを残しておきます。

Chankoの概要はこちらの記事を参考ください。

Chankoの使い方に関しては、公式ドキュメントを参照ください。

RSpecで機能unitを制御してテストする

公式ドキュメントではRSpecについて触れてなかったので、自分なりに使い方を検討しました。

既存のテストは、常に新機能がなかったものとしてテストする。
unitごとのテストはapp/spec/units/example_unitに置いて、この中にあるファイルが実行される時だけunitを有効にしてテストする。
active_ifは以下のように書く。

# app/spec/units/example_unit
active_if do |context, options|
  Rails.env.test? ? false : true
end

app/spec/units/example_unitのテストが実行される時、enable_unit(:example_unit)をbeforeで実行して、unitをactiveにする。
chanko/testをrequireする必要がある。

# app/spec/units/example_unit/example_unit_spec.rb
require 'chanko/test'

RSpec.feature 'example_unit', type: :feature do
  before do
    enable_unit(:example_unit)
  end

  ...
end

おまけ: Chankoを導入しなかった理由

ActiveJobに対応してなかったから。