新人SEに向けて~はじめてのrspec編~①
現場に入って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実行後のエラー対処の方法
手順は以下になります。
- エラー文を読み、予想外の挙動をしているのはどんな値かを確認する
- 予想外の挙動を探るためにbinding.pryをコードに差し込む
- もう一度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ファイルを編集したい を扱います。
コメントで感想や指摘いただけると助かります!
それでは!(`・ω・´)