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

f:id:piyo_yeah:20181202190633j:plain

現場に入ってRSpecをいじることになったけど、何をすればいいかよくわからない、そんな人に向けた記事。
※この記事ではRSpecをspecと略します。現場の人も大体スペックって呼ぶし。

RSpecをいじる3つの目的

1. specを実行する方法が知りたい
2. specを実行したら通らなかったので、その修正をしたい
3. 開発をしたのでspecファイルを編集したい

今回は1及び2について触れていきます。

1. specの実行方法

以下のコマンドで大体OKです。

# 全specファイルを実行
bundle exec rspec
# 指定したspecファイルを実行 例: spec/models/user_spec.rb
bundle exec rspec spec/models/user_spec.rb

2. spec実行後のエラー対処の方法

手順は以下になります。

  1. エラー文を読み、予想外の挙動をしているのはどんな値かを確認する
  2. 予想外の挙動を探るためにbinding.pryをコードに差し込む
  3. もう一度specを実行し、入力画面になったらその値の状態を確認する

2-1. 予想外の挙動をしている値を確認

例えば以下のような処理にて、@user が見つからないよ、と言われた場合。
ここで予想外の挙動をしているのは、@user 及び num の2つですね。

# spec/models/user_spec.rb
# ~~いろんな処理~~
@user = User.find(num)

2-2. 予想外の挙動を探るためにbinding.pryをコードに差し込む

先ほどのコードを以下のように編集します。
1. 問題が起こった処理の1つ前の行に、binding.pryを挿入
2. specファイルの先頭に require 'pry' を挿入

# spec/models/user_spec.rb
require 'pry'
# ~~いろんな処理~~
binding.pry
@user = User.find(num)

このgemがインストールされていない場合は、pre-byebug を別途インストールしてください。
●参考●Rails で Pry を使う - Qiita

2-3. もう一度specを実行し、入力画面でその値を確認する

今度は実行後にこんな画面が出てきます。そこで変数名を入力して、値を確かめることが出来ます。
Railsの開発効率をあげる - Pryを使ってRailsのコンソールをパワーアップ & デバッグをする - Rails Webook
※わかりやすい画面が載っているので是非参考に。
もしnum と打ち込んで、想定していた値が出てこなければ、原因が明確になりますね。
そこで次は「何故num がこんな値になったのか」を探ることになります。num に関連するコードを追っていけば、その原因がわかるでしょう。

おわり

今回はここまで。
次回は 3. 開発をしたのでspecファイルを編集したい を扱います。

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