RailsTutorialを行っていたところ、以下のようなテストコードが現れました。
テストファイル
rb
1require 'test_helper' 2 3class MicropostTest < ActiveSupport::TestCase 4 5 def setup 6 @user = users(:michael) 7 @micropost = Micropost.new(content: "Lorem ipsum", user_id: @user.id) 8 end 9 10 test "should be valid" do 11 assert @micropost.valid? 12 end 13 14 test "user id should be present" do 15 @micropost.user_id = nil 16 assert_not @micropost.valid? 17 end 18 test "content should be present" do 19 @micropost.content = " " 20 assert_not @micropost.valid? 21 end 22 23 test "content should be at most 140 characters" do 24 @micropost.content = "a" * 141 25 assert_not @micropost.valid? 26 end
@micropostというインスタンス変数に新しく作成するクラスデータ?を代入することで、@micropostは値を得ます。
rb
1 test "should be valid" do 2 assert @micropost.valid? 3 end
は、assert @micropost.valid?
が有効であればtrue、していなければfalse
rb
1 test "user id should be present" do 2 @micropost.user_id = nil 3 assert_not @micropost.valid? 4 end 5 test "content should be present" do 6 @micropost.content = " " 7 assert_not @micropost.valid? 8 end 9 10 test "content should be at most 140 characters" do 11 @micropost.content = "a" * 141 12 assert_not @micropost.valid? 13 end
上の3つは、バリデーションに引っかかるように@micropost
を設定し、その後に、assert_not @micropost.valid?
が有効でなければtrue、有効であればfalseを返す
という認識でよろしいでしょうか?
正直変な質問だと思いますが、validやassertなど様々なメソッドが多すぎて全容が掴めていないのが現状&独学という状況のため、ちょっとのことでも不安になってしまっているというのが経緯です。
なお、モデル内バリデーションは以下のコードになっております。
モデル内
rb
1class Micropost < ApplicationRecord 2 belongs_to :user 3 validates :user_id, presence: true 4 validates :content, presence: true, length: { maximum: 140 } 5end

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。