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_unit
とresque-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
を使った非同期タスクのテストコードが書けるようになりました。
よかったですね。
-
category:
- ruby tags: