新人SEに向けて~はじめてのrspec編~②
現場に入ってRSpecをいじることになったけど、何をすればいいかよくわからない、そんな人に向けた記事。
※この記事ではRSpecをspecと略します。現場の人も大体スペックって呼ぶし。
前回の続き。
今回は「specファイルを編集するために何を考えるべきか」をメインに扱う…つもりでしたが、先ず基本的な読み方から解説します。
specファイルの基本パーツたち
先ずはコレ。調べないとわかりにくいルールが沢山あるので、一つ一つ解説していく。
RSpecを利用している場合、FactoryGirlないしFactoryBotを併用していると思うので、それを前提に話していく。
例えばこんなコードがあるとして。
describe ’hoge’ do before(:each) @user = FactoryBot.create(:user, role: :admin) end it ’when admin user’ expect(@user.id).to eq 1 end end
rspecは、主にdescribe、before、itの3つによってテストファイルが構成される。
describe節とは
describeはテストファイルを分割するもの。文字列を渡して「これは何をテストするか」を説明(describe)する。
文字列はなくても構わないが、読む際のわかりやすさを重視して説明を入れるのがベスト。
before節とは
beforeは、分割されたテストごとにテストデータを用意するもの。例えば複数のテストで同じテストデータを用意したい場合に重宝する。
今回は一つしかテストしてないから、わざわざbeforeを使う必要はない。
it節とは
itは具体的なテスト項目ごとに設けるもの。itの中にはテスト一つだけが入っているのが理想だが、テストを複数行うことも可。
この「具体的なテスト」はexample とも呼ばれる。テストにおける最小単位。
expect(A).to eq B とは
it節の中身について抑えるべきことは、テストデータが期待通りの状態にあるかどうかを確かめていること、これだけです。
因みにこの場合は「AがBに等しいことが期待される」という意味。
to, not_to, eq, be >=, be <= など色々なパターンがありますが、直感的に理解できるものばかりなので割愛。
お・わ・り
今回はここまで。
次回は、「テストデータを用意するための考え方」 を扱います。
「開発とテスト実施の違い」に焦点を置いて、どのような形でテストを作成していくか、基本を話していく予定です。
コメントで感想や指摘いただけると助かります!
それでは!(`・ω・´)