0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

assert_not と vlaid? を使い validation が有効かどうか確認するテスト

Posted at

assertとassert_notメゾット

  • assert        ➡︎ 引数 が trueなら成功、falseなら失敗となる
  • assert_not ➡︎ 引数 が trueなら失敗、falseなら成功となる

valid?メゾット

valid? は、モデル(ActiveRecord)のメソッドで、バリデーションを実行して、モデルが正しい値かどうかを調べるものです。
バリデーションが通れば true 、通らなければ false を返します。
※そもそもvalidって何って人は、こちら 簡単に言えば、入力内容や記述内容が要件を満たしているか確認することです。

name属性のバリデーションに対するテスト

test/model/user_test.rb
test "name should be present" do
 @user.name = "     "    #name属性に空欄をセット
 assert_not @user.valid? #←バリデーションをまだ設定していないので、どんな値でも true で返ってくる。
end                      #つまり、assert_not メソッドでエラーが起きる

@userの値が空欄になっています。
もし presence のバリデーションが有効ならば @user.valid?は false を返すため、
assert_notが成功となりエラーは起きません。

しかし presence のバリデーションが無効(もしくは未設定)の場合は、たとえ@user.nameが空欄であろうとなかろうと、
valid?メソッドは true を返すため、assert_not が失敗となります。
なので、ここではエラーです。

成功させるために、validates メソッドに presence: true という引数を与えます。

name属性のバリデーションを検証する

app/models~user.rb
class User < ApplicationRecord
  validates :name, presence: true
end

これでテストがパスします。

railsではこのようにバリデーションの有効性をテストしています。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?