resque_unit をやめた話

https://rubygems.org/gems/resque_unit_without_mock を作ったという話です。
https://github.com/jiikko/resque_unit_without_mock

仕事でresqueのモックライブラリであるresque_unitというgemを使っていたのですが、キューを制御するresque-unique_in_queueを導入しようとした時に、
resque_unitresque-unique_in_queueが競合してしまい、 resque-unique_in_queueがテスト時に動かない、ということがありました。

キューを制御しなければ本番環境がエラーになってしまうケースがあるので、 resque-unique_in_queueの導入を避けることはできません。
したがって、テスト実行時に現物Redisを使うしかないという判断をしましたが、
resque_unitが提供するヘルパーメソッドに依存したテストコードがこのプロジェクトには点在していたため、現物Redisを使うにしても同等のメソッドを引き続き使える必要があり、 resque_unit をGemfileから削除するだけではダメなのです。

そこでresque_unit_without_mockです。
resque_unit_without_mockは、resque_unitとほぼ同等のメソッドを提供し、テストコードの変更は微量に抑えることができて、現物Redisを使います。

つまり、このgemを使うことでresque_unitに依存したテストコードは維持したまま、resque-unique_in_queueを使った非同期タスクのテストコードが書けるようになりました。

よかったですね。