みやちゃ
皆さんこんにちは、みやちゃです!
物理とプログラミングについて解説しています!
今回はRspecでモデルのテストを書いていきます!
まだRspecをインストールしていない方はこちらの記事をご覧ください!
こちらの記事で、「テストをするアプリケーションの作成」から「簡単なテストの実行」まで解説しているので、ぜひそちらからご覧ください!
- .rspecの設定
- Userモデルのテストファイル作成
- テストの記述
Userモデルのテストを書けるようになります!
目次
Rspecの動作確認
ちゃんとRspecが動くかどうかの確認を一応しておきましょう。
ターミナルを開いて以下のコマンドを実行してください。
rspec_sample miyacha$ bin/rspec
上記のコマンドの結果
Running via Spring preloader in process 95419
.
Finished in 0.04726 seconds (files took 0.60952 seconds to load)
1 example, 0 failures
上記のような結果が返ってくれば、ちゃんとRspecが動いています。
この「・」は、前回の記事で書いた簡単なテストの成功を表しています。
テストを2つ書き、テストを実行し、2つとも成功すると、「・・」と表示されます。
非常にわかりにくいですね。
ちゃんとどのテストが成功したのかがわかるように設定しましょう。
.rspecの設定
「.rspec」というファイルが「Gemfile」の少し上にあると思います。
そのファイルを開き、以下の一文を追加してください。
--format documentation
追加できましたら、ターミナルを開いて、テストを実行してみましょう。
rspec_sample miyacha$ bin/rspec
Running via Spring preloader in process 95666
String
sample test
Finished in 0.00623 seconds (files took 0.52284 seconds to load)
1 example, 0 failures
上記のように、「・」から「String sample test」という文字列に変わりました。
これならどのテストが通ったのかすぐわかりますね。
Userモデルのテストファイル作成
それではついにモデルのテストを書いていきましょう。
まずはUserモデルのテストを書きます。
テストファイルを作成しましょう。
ターミナルで以下のコマンドを実行してください。
rspec_sample miyacha$ bin/rails g rspec:model user
上記の結果
Running via Spring preloader in process 95449
create spec/models/user_spec.rb
上記のような結果が返ってくればうまくいっています。
specフォルダの中に、modelsフォルダが作成されて、その中に、「user_spec.rb」というテストファイルが作成されました。
このファイルにテストを書いていきます。
一度ファイルを開いてみましょう。
「spec/models/user_spec.rb」を開いてください。
require 'rails_helper'
RSpec.describe User, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end
「require 'rails_helper'」の部分は、こちらの記事でも解説したように、全テストファイルで必要になる1行です。
この1行がなければ、うまくテストを実行できません。
この1行によって、「rails_helper.rb」のファイルを読み込んでいます。
また、「RSpec.describe User, type: :model do」と「end」の間にテストを書いていきます。
「pending」の1行は消してしまいましょう。
それではテストを書いていきます。
テスト:全てのカラムがあれば、有効な状態である
まずは1つ目のテストを書いていきます。
テストの内容としては、「全てのカラムがあれば、有効な状態である」です。
つまり、「全てのカラムが埋められた状態であれば、有効にUserモデルを作成できるか」のテストをします。
「spec/models/user_spec.rb」を開いて、以下のように記述してください。
require 'rails_helper'
RSpec.describe User, type: :model do
it "is valid with a email and password" do
user = User.new(
email: "user1@user.com",
password: "user1pass",
)
expect(user).to be_valid
end
end
it "テストの名前" do
テストの内容(今回はuserという関数に、作成したユーザーを代入している)
expect(予期する結果)
end
expectの1行には、テストの予期する結果を書きます。
今回は「userの関数の中に代入されたユーザーがbe_valid(有効である)」という内容を書いています。
テストを実行してみましょう。
ターミナルを開いて、以下のコマンドを実行してください。
rspec_sample miyacha$ bin/rspec spec/models/user_spec.rb
上記の結果
Running via Spring preloader in process 95774
User
is valid with a email and password
Finished in 0.03447 seconds (files took 0.3944 seconds to load)
1 example, 0 failures
上記のような結果が返ってきました。
テストが通ったみたいです。
つまり、全てのカラムを有効な状態で埋めれば、Userモデルが作成できるということがテストによりわかりましたね。
まとめ
続きは次回で!
みやちゃ
ここまでご覧いただきありがとうございます!
こちら のUdemyの動画教材は、8時間で、
- Dockerで仮想環境構築
- Railsの基礎を解説しながら、アプリケーション開発
- RSpecでテストを記述
まで解説しています。
Udemyの教材へRailsエンジニアとして働くために必要な、DockerとRSpecを同時に解説してくれています。
DockerとRSpecを使って作ったポートフォリオはかなり評価が高くなります。
ぜひ動画を見てみてはいかがでしょうか?
Udemyの教材へ受講生は、5000人以上!です。
さらに、Udemyは、30日間の返金保証付きなので、いつでも返金できます。