fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

RSpecを学ぶ時、書く時に参考になる記事一覧

随時更新中。

「everyday Rails RSpecによるRailsテスト入門」を読了後に読むモノ。
初めてRSpecを学ぶ場合は、何も考えずに書籍の購入をやりこむのがオススメ。

使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」

qiita.com

アンチパターン】Arrange、Act、Assert(AAA)を意識できていないRSpecのコード例とその対処法

qiita.com

Arrange、Act、Assert(AAA)を意識したRSpecの書き方を学べる。

RSpecが複雑になってきた場合に、下記を示してくれる。

  • どこに何を書けば良いか
  • どうすれば可読性が上がるか

個人的に、記事中で紹介されている「テストコードを書き始める前に大枠だけ固め」る技は、テストに限らず通常の実装時にも、「とりあえずロジックだけ日本語で書き出す」みたいに応用できるのでオススメ。AAAはJavaの書籍「実践JUnit」とかでも出てくるので、懐かしい。

Railscasts - How I Test

railscasts.com

Better Specs

画面右上で日本語選択できます。
www.betterspecs.org

【初心者向け】レビュワーをイライラさせるRSpec集と解決方法

tech.medpeer.co.jp

可読性、保守性の高いRSpecについて、メドピアのエンジニアの方がポイントを書いてくださっている。

特に、「5. テスト対象が同じ、複数のテストケースで、subjectが使われていない」の内容は、subjectが効果を発揮するのはどういう場面かが、具体例をもとに示されており分かりやすい。

簡易的なサンプルコードではsubjectの有用性がイマイチ理解できなかったが、記事内で挙げられている具体例ではsubjectでまとめることにより、同一の内容をテストしているということが明確になり分かりやすい。

長いメソッド名、メソッドチェーン連発、引数が微妙に違うとか、一目見た時に同じ処理だと思ってたけどよくよく見てみると違うじゃん!という保守性の悪いコードを何回か見たことがあるので、subjectを使うことにより同一処理が明確になるのは嬉しいし、何より文字数減ってスッキリしている。

なお5.以外の内容を読む前から当たり前と感じない場合は、リーダブルコードや「Arrange、Act、Assert(AAA)を意識できていないRSpecのコード例とその対処法」を読むのがオススメかもです。