LoginSignup
21
18

More than 3 years have passed since last update.

assert_not と vlaid? を使い validation が有効かどうか確認するテスト 6.2.2 存在性を検証する

Last updated at Posted at 2020-01-23

assert と assert_not メソッド

  • assert hoge の場合 ➡︎ hoge が trueなら成功、falseなら失敗となる

  • assert_not hogeの場合 ➡︎ hoge が trueなら失敗、falseなら成功となる

valid? メソッド

valid? は、モデル(ActiveRecord)のメソッドで、バリデーションを実行して、モデルが正しい値かどうかを調べるものです。
バリデーションが通ればtrue、通らなければfalseを返します。

バリデーションの有効性

user_test.rb


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

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

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

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

21
18
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
21
18