Rails

はじめてのRspecの導入

1+

久しぶりにRspecを書こうと思った時に、導入手順を忘れたので、メモ!

そもそも、なぜテストをするのか?

■プロダクトの品質を上げるため(品質保証)
■プログラムが想定した動作をすることをチェックするため
■コードの追加、改修によって想定外の場所でバグが発生していないかを確認することができる
■リリース前にテストコードを実行することで、バグの含まれたコードのリリースを防ぐことができる。
■何を意図したコードであるか、読み取ることができる
■バグ・不具合を見つけるため
■クラッカー対策
⇒普通のユーザーであれば、しないような行為、例えば256桁のパスワード、500文字のメールアドレス等をフォームに入力・PostされたときにDBが不具合を起こしたりしないようにModelspecでバリデーションがきちんと働いているかチェックしたりする。 等々https://furien.jp/columns/300/#1

テストのデメリット

・通常のプログラムに加えてテストコードも書くことになるため、工数がかかる
・仕様が変わったり、コード変更になったら都度メンテナンスしないといけない。

Rspecの導入

参考記事:https://ruby-rails.hatenadiary.com/entry/20141026/1414289421

Gemの導入

Springとは

Rails4.1から標準で付属するようになったアプリケーションプリローダー。
Railsでは様々なライブラリのロードなどの前処理が行われるので、コマンドを実行するためには待ち時間がかかってしまう。事前にバックグラウンドでライブラリをロードしておくことで、その待ち時間を短縮するのが、アプリケーションプリローダー。
https://ruby-rails.hatenadiary.com/entry/20141026/1414289421

Springを使うために、Rspecのstubファイルを作成しておく

stub(スタブ)とは:テスト対象から呼び出される代用品。本番のデータはないから仮のデータで本番さながらのリハーサルをやっているイメージ
https://wa3.i-3-i.info/word14933.html


◯FactoryBotはテスト用のデータを作成してくれるツール

https://qiita.com/A-Hama/items/d1b0219b00eb1e9a14f5

FactoryBotとは

FactoryBotは、テスト用のデータを簡単に作成することができる便利ツール。
下記の設定を行うと、Rspecのテストコード中でFactory_botのメソッドを使用する際に、名前空間の指定を省略することができる

下記コマンドを入力することで、factoriesディレクトリが作成される。
今回は一例としてuserモデルのテストコードを記述することを想定して、modelをuserにしている

あとは、FactoryBotにデータを作成すれば使える

Fakerとは

fakerは疑似データを作成する便利なツール
https://qiita.com/A-Hama/items/d1b0219b00eb1e9a14f5

こんな感じで使う

Rspecの初期ファイルをインストールする

テストは空だが、これでRspecを実行することができるようになる

■下記コマンドでローカル開発環境と同様のマイグレーションをテスト環境で再現できる

1+