はじめに
Railsを扱っていると一度はRSpecというテストフレームを聞いたことがあると思うが、このRSpecを練習する電子書籍としてEverydayRails-RSpecという電子書籍がある。
今回はこの書籍でRSpecを学ぶにあたって自分のアプリで練習するべき理由を3つ挙げる。
1. 考えながらテストを学べる
「当たり前だろ!」と思うかもしれないが本当にこれに尽きると言っても過言ではない。
コントローラスペックの簡単な例を出すと
以下のコードを見ただけでは
認可されたユーザーとは?
FactoryBotってなんだったっけ?
なんでsign_inしてるの?
など様々な疑問が出てくるはずです。
describe "#show" do
# 認可されたユーザーとして
context "as an authorized user" do
before do
@user = FactoryBot.create(:user)
@post = FactoryBot.create(:post)
end
#正常にレスポンスを返すこと
it "responds successfully" do
sign_in @user
get :show, params: {id: @post.id}
expect(response).to be_success
end
end
end
githubからcloneしたコードでただ単にやっていると疑問もあまり出てこず理解もできないはず。手順通りに進めると書いてある通りの挙動をするが、自分のアプリで進めると次のようなことに気づくはずである。
・sign_inしてるのは、deviseのメソッドであるbefore_actionでログインしていないユーザーを弾いてるからだ。
・一度アプリを起動させてログイン済み、未ログインのユーザーで色々試すとサインアップ画面に飛ばされる
などなど...
実際に私の周りの人もこの書籍のアプリでやるのと自分のアプリでやるのとでは微妙にかくspecも違うし挙動も違うから勉強になる。と言っていた。
2.構文やマッチャを覚えられる
この書籍を進めていくと様々なテストの書き方やマッチャが登場する。もちろん単語通りで簡単なものもあるが要は何をテストして、何を期待してるの?ということもしばしば。
そういう時はQiitaで調べたり、ググってどういう使われ方をしているのかを調べることで新しいことを覚えられる。
書籍ではこの挙動をしているのに自分のアプリでは違う挙動をする。なんてこともよく発生するがその時は自分のテストにあったものを探すことでまた新たに知識が増える。
自分のアプリが堅牢なものになる。
今までに述べたことと似たような感じだが、自分のアプリで自分のアプリに合うようにテストをかけるようになることで堅牢なものになり、効率的な開発ができるようになる。