RSpecでテストを書くときの参考資料神7
RSpecをどう書くかは著名な方々が既に語り尽くしている印象です。そのため非常に参考となる7つの資料、通称神7*1の紹介をします。
私はこれまでレビュやエンジニアインターンに教える際に何度となく神7のお世話になりました。そん経験を踏まえてどの資料にどのようなことが記述されているか、どんな人が読むべきかを併記します。
神7
- Read Everyday Rails - RSpecによるRailsテスト入門
- RSpecえかきうた
- 使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita
- Better Specs { rspec guidelines with ruby }
- GitHub - willnet/rspec-style-guide: 可読性の高いテストコードを書くためのお作法集
- Clean Test Code Revised - Speaker Deck
- RSpecしぐさ
神7はざっくり次の3つのタイプに分けることができます。
- RSpecやテストについて全体感を掴めるもの
- 特有の記法や書き方を扱うもの
- より良く書くための戦略や概念の理解に役立つもの
RSpecやテストについて全体感を掴めるもの
RSpec入門者どころか、テスト入門者は学ぶことが非常に多いです。そのため、情報がまとまっている資料をおすすめします。全体感を掴んでから細部の理解に努めると捗ります。
Read Everyday Rails - RSpecによるRailsテスト入門
特徴
この資料を読んだほうがいい人
順序立てて、体系的に学びたい人、ソフトウェアのテスト・RSpecに関してそもそも未経験の人。
本の内容量に圧倒されたり、心が折れないようにだけ注意が必要です。*3この本を最後まで理解できれば、非常にレベルが高い人になれます。いきなりそのレベルに到達しようとせず、必要と余裕に合わせて読み進めましょう。
RSpecえかきうた
特徴
- RSpecでテストコードを0から書き上げる流れを説明している
- テストコードがどんなパーツで構成されているか、それをどう設計するか概要を掴みやすい
- さっと読み、参考にしやすい文量
この資料を読んだほうがいい人
新しくテストを書くぞとなった時にどこから手をつけたら良いかわからない人。describe・context・itの意味するところ、それらの並べ方が良くわからない人。
RSpecの書き順を紹介する記事です。1例なので異なる書き順の人もいるかもしれませんが、お手本として真似するのにおすすめな王道の書き順だと考えていいです。自分のポリシー・書き方が定まっていない人は真似してみましょう。
特有の記法や書き方を扱うもの
使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita
特徴
- Qiitaにて無料で入門記事として適度なボリュームで分けて公開されている
- 前述のEveryday Rails(略)の日本語訳者(jnchito - Qiita)が書いているため、文章として非常にわかりやすい
この資料を読んだほうがいい人
テストに関しては知っているが、RSpecの書き方はほぼ知らない人。Everyday Rails(略)を買うか悩んでいる人。
RSpecのシンプルな記法から、実務で書く際に役立つTipsやリンクなども親切に挿入されています。「この人の文章読みやすいな!」と感じたらぜひ前述のEveryday Rails(略)を購入しましょう。
Better Specs { rspec guidelines with ruby }
特徴
この資料を読んだほうがいい人
RSpecの書き方はほぼ知らない人。レビュで小さめの指摘が多い人。「この書き方ならMiniTestでよくない?」「RSpecらしく書いて欲しい」と言われる人。
多言語に翻訳されたページがあるので、留学生インターンなど日本語ネイティブではない駆け出しのエンジニアにもおすすめしやすいです。
GitHub - willnet/rspec-style-guide: 可読性の高いテストコードを書くためのお作法集
特徴
この資料を読んだほうがいい人
RSpecの書き方はほぼ知らない人。レビュで「RSpecらしく書いて欲しい」と言われる人。読みにくいテストコードに悩んでいる人。
良くない例・それが何故良くないか・どう書けば改善されるかがそれぞれのトピックで説明されているため、強い納得感が得られます。レビュア側としても指摘をする際にこのページのリンクを渡すと説明がしやすいです。各現場毎にRSpecの書き方はあると思いますが、このガイドをベースにするといいと思います。
Clean Test Code Revised - Speaker Deck
特徴
- 読みやすいテストコードのための決定版となるスライド
- 可読性を下げるものとそれを排除するプラクティスと具体例が示される
この資料を読んだほうがいい人
読みにくいテストコードに悩んでいる人。動くだけのテストコードから読みやすいテストコードへと次の段階を目指す人。細部のよい書き方はわかるが、全体の理想を掴みきれていない人。
なんで読みにくいんだろうに対する回答となる資料です。こちらの記事を合わせて閲覧するとより深い理解を得られるでしょう。
RSpecしぐさ
特徴
- BDD・TDDを踏まえたRSpecとは何かを知ることができる
- spec等の語彙について深く理解できる
この資料を読んだほうがいい人
MiniTestととの違いが気になっている人。Specをテストという意味だと思ってる人。自然言語としてテスト仕様書としても読みやすいRSpecを書きたい人。
RSpecに関連することを概念的な部分から説明している資料です。この資料を読めば、テストを設計を意味をより大切に感じられると思います。
最後に
他にもおすすめな資料があればぜひ教えてください。