Ruby on Rails プログラミング 日記投稿サービスを1から作る

【Rspec入門 #3】Rails6にてRspecでUserモデルのテストの書き方

 

みやちゃ

 

皆さんこんにちは、みやちゃです!

物理とプログラミングについて解説しています!

今回は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日間の返金保証付きなので、いつでも返金できます。

たったの8時間でDocker、Rails、Rspecを学ぶ即戦力Railsエンジニア養成講座

© 2024 とあるエンジニアの備忘録ブログ Powered by AFFINGER5