Rspec モデルの異常系単体テストコードについて


初めに

学習のメモがわりに残していきます。
前提として、RSpec,FactoryBotの導入は済んでいる。
実際にファイルに記述するところからスタートします。

単体テストコードの用語について

単体テストコードの用語を説明しながら進んでいきます。今回はユーザーの新規登録機能について書いていきます。

describe

descibeとはテストコードのグループ分けを行うメソッドのことです。
どの機能に対してテストを行うかを分けdo~endの中に記述します。

it

itもグループ分けを行うメソッドです。itの場合はdescribeで分けたグループをより詳細に分けます。itで分けたグループのことをexampleとも呼びます。こちらもdo~endの中に記述します。

Valid?

valid?はバリデーションを実行させてエラーがあるかどうか判断するメソッドです。
エラーがない場合はtrueをある場合はfalseを返します。またエラーの内容を示すメッセージを生成します。

errors

errorsとはインスタンスにエラーがある場合その情報を示してくれます。このときfull_messgesメソッドを使用します。
full_messagesメソッドを使用することによってどのようなerrorsが出ているのかを確認できます。

エラーメッセージの確認

早速エラーメッセージの確認をしていきます。今回はemailが空の時は登録できないことを検証します。
なので@user.email=""と書きemailが空であることを示します。
そのあとはbinding.pryを使用して確認します。

ターミナル上で

bundle exec rspec spec/models/user_spec.rb

と打ち込むと以下の画像のように止まります。

コンソール上に@user.vaild?と打ち込むとfalseとでます。
@user.errors.full_messagesと打ち込むと以下の画像のようにエラー文が出てきます。

あとはエラー文をコードに以下の画像のように打ち込みます。

最後にターミナル上で

bundle exec rspec spec/models/user_spec.rb

と打ち込み正常に動作したら完成です。