LoginSignup
0
0

More than 3 years have passed since last update.

[Rails5] Rspec -validation編-

Last updated at Posted at 2020-05-19

はじめに

今回はModelのvalidationを対象にRspecを書きます

・name,email,passwordがあれば有効である事
・name,email,passwordが無ければ無効である事

以上の2点をテストしたいと思います。

1. テスト対象

validates :name,
       presence: true,   
validates :email,
       presence: true,   
validates  :password,
       presence: true,

テスト対象はUser登録時のvalidationを対象にします。
今回はvalidationの有効性のみ検証したいので、上記の様に簡素なコードとします。

2.実装

require 'rails_helper'

Rspec.decribe User, type: model do
  describe '#validates' do
    context '名前、メアド、パスワードが正しければ' do
      it '有効である事'  do
        @user = User.new ({
          name: "テスト太郎",
          email: "xxx@yyy.jp",
          password: "111111",
        })
        expect(@user).to be_valid
      end   
    end

    context '名前、メアド、パスワードが正しくなければ' do
      it 'validateされる事' do
        @user = User.new ({
          name: "",
          email: "",
          password: "",
        })
        expect(@user.valid?).to be_falsy
      end
    end
  end
end

インスタンス変数にそれぞれ正しいオブジェクトと正しくないオブジェクトを代入します。

validationgが有効であるかテストする為にbe_valid(プレディカットマッチャ)を使い、反対に有効では無い時はfalseが返ってくる事を確認する為にbe_falsyを使っています。

*オブジェクトを作る時のnewメソッド直後の波括弧はvalue,括弧はkeyそれぞれに与えてあげないといけない見たいです。個人的にちょっと嵌りました。

3.テスト結果

2 examples, 0 failures

通りましたね。

validation対象のRspecはシンプルな記述ができるので理解し易いと感じました。

最後に

今回はまとめて実装して見ましたが本来各カラム毎にテストを走らせる必要があると思います。

それとコード叩いてて思ったのは自分自身、各括弧 (){}[] をそれぞれ感覚で使っていたので改めて理解する必要があるなと感じました。また記事にしたいと思います。

ps→
日本うなぎの稚魚はオーストラリアから海流に乗ってやってくるらしい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0