新人SEに向けて~はじめてのrspec編~②

f:id:piyo_yeah:20181202190633j:plain

現場に入って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 <= など色々なパターンがありますが、直感的に理解できるものばかりなので割愛。

お・わ・り

今回はここまで。
次回は、「テストデータを用意するための考え方」 を扱います。
「開発とテスト実施の違い」に焦点を置いて、どのような形でテストを作成していくか、基本を話していく予定です。

コメントで感想や指摘いただけると助かります!
それでは!(`・ω・´)