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 がけっこうあって困った。

Tags of current page

,