RRはRSpec 3には対応していない。でも…。
最近はそうでもないんだけど、以前は RSpec の test double の記法がどうしても納得いかなくて RR というライブラリを一部のテストに採用している。今回この RR を採用しているプロジェクトの RSpec を 2 から 3 に上げて動かなくなったのでその対処について。
結論から言うと RR 自体は RSpec 3 には対応していない。
as well as the following test frameworks:
- RSpec 2
- Test::Unit via test-unit-rr
- MiniTest 4
- Minitest 5
Support for Rspec 3 · Issue #65 · rr/rr
There is no plan to support RSpec 3.
If we support RSpec 3, we\'ll create rspec-rr gem instead of implementing RSpec 3 support into rr itself.
アッハイ。
でも実際には
stub(Klass).method {}
を
RR.stub(Klass).method {}
に書き換えれば動く。
本来 RSpec 3 は stub, mock を double の alias に使わないとかグローバル汚染させないモードもあるらしいので、共存することもできるんじゃないかという気がしたんだけど、なんか割と小さい変更で動くようになってしまったのでどうでもよくなってしまった。
少なくとも RR で書いていたものをすべて RSpec や Minitest の double の書き方に合わせ直す方がはるかに面倒だし、この程度で済めば御の字だろう。
[2016-07-27 追記]
after { RR.reset }
がないとあちこち変な動きをするみたい。