Rspec 3 に向けて spec を修正する
久しぶりに rspec を実行したらいろいろと警告が出た。 Rspec 3 で仕様が変わるらしく、それにあわせて以下のような修正を行った。
メソッド mock が deprecated
DEPRECATION: mock is deprecated. Use double instead
mock は deprecated で double を代わりに使えば良いだけなので、ただの置換ですむ。 乱暴な方法なので注意が必要だが
find . spec -type f | xargs sed -i -e"s/ mock(/ double(/g"
でだいたいの部分を修正した。
m = mock
などにはマッチしないので、これらは手作業で修正した。 メソッドの mock だけにマッチするということを保証できないワンライナなので注意 (本当はきちんとしたワンライナに修正すべきなのだが、 sed がよくわからないのとマッチしなかったところは手作業で直してもたいしたことなかったので)。 私の環境では git で管理しているディレクトリなので、実行後に
git diff
でチェックしてコミットした。
メソッド stub! が deprecated
DEPRECATION: stub! is deprecated. Use stub instead
これは mock のときと同じように修正した。
before(:all) の中の let と subject
警告には「let と subject はそれぞれの spec でリセットされる状態を定義するのに使う」と書いてある。 これは、spec 毎に内容を見て変更するしかない。
これを修正していると、 そもそも spec 毎に状態が完全にリセットされていないあまりよくない spec がけっこうあって困った。