rails

【Rails】Rspecでvalidationのテストをしよう!-準備編

やべっち(@yabecchi312)です!

Ruby on RailsでRspecを使用するとRspecを使ってテストコードを書くことが出来ますが、今回は私がチームで開発したcookpadのクローンについて、ユーザーが新規登録する時に本当にバリデーションがかかるのかテストコードを書きました。

リンク:https://yabecchi-cookpad.herokuapp.com/

テストコードはプログラミングを学び始めた方だと軽視しがちですが、実際の現場では必ず必要なものです。(私も軽視していた。。。)

実際にアプリ開発ができるようになったらテストコードも大事になるのでメモで残します!

Rspecを使うためにgemをインストールしよう!

Rspecを使用するための環境を整えるために必要なgemをインストールします。

Gemfileのgroup :development, :test の中に二つのgemを追記します。

/Gemfile/
group :development, :test do
  gem 'rspec-rails'
  gem 'factory_girl_rails'
end

こちらの二つをbundle installします。

factory_girl_railsは簡単にダミーのインスタンスを生成できるgemです。

とても便利なので一緒に導入しましょう!

Rspecの設定!

/ターミナル/
$ rails g rspec:install

ターミナルで上のコマンドを打つと新しく下記のファイルが生成されます。

/ターミナル/
     create  .rspec
     create  spec
     create  spec/spec_helper.rb
     create  spec/rails_helper.rb

spec_helper.rbはRailsにおいてRspecを使用する際に共通の設定をこちのファイルに記入します。

各テスト用ファイルでこちらのファイルを読み込むことで、共通の設定やメソッドを使います。

また、rails_helper.rbは上と同じ9通の設定を書くファイルですが、こちらはRspecをRailsなしで利用します。

.rspecに下記を追加

/.rspec
--format documentation

これで準備完了!

バリデーションでテストしたいことをまとめよう!

今回テストしたいことは新規登録画面でバリデーションがかかるかどうかをテストしたいため、以下のような項目をテストしたいと思います。

1.nameとemail、passwordとpassword_confirmationが存在すれば登録できること
2.nameが空では登録できないこと
3.emailが空では登録できないこと
4.passwordが空では登録できないこと
5.passwordが存在してもpassword_confirmationが空では登録できないこと
6.nameが11文字以上であれば登録できないこと
7.nameが10文字以下では登録できること
8.重複したemailが存在する場合登録できないこと
9.passwordが6文字以上であれば登録できること
10.passwordが5文字以下であれば登録できないこと

実際の新規登録画面がこちらです。

Rspec用に必要なフォルダとファイルを作成

Rspec用のディレクトリの作成

今回はバリデーションを調べる上でモデルの中のテストコードを書きたいため、specディレクトの中にmodelsフォルダを作成して、その中にuser_spec.rbというファイルを作成します。・

フォルダやファイルの作成は右クリックで簡単に作成できます。

factory_girl用のフォルダとファイルを作成

このようにfactoriesフォルダとその中に今回テストをしたいのはuserの新規登録なのでuser.rbというファイルを作成しまう。

このuser.rbの中にダミーのインスタンスを記述します。

 

これで準備が整いました!

今回は記事が長くなってしまいそうなので、次の記事でfactory_girlのインスタンスの記述と実際のRspecの記述を解説していきます!

「天職」の見つけ方がわかる