【Rails】RSpecでモデルのテストをする
概要
モデルのテストの記述方法を解説します
詳しくはRSpecの公式サイトのモデルに関するページを参考にしてください
今回は一例としてPostモデルのテストを解説します。
前提としてPostにはアソシエーションされたCommentモデルが存在します。
require "rails_helper"
RSpec.describe Post, :type => :model do
context "with 2 or more comments" do
it "orders them in reverse chronologically" do
post = Post.create!
comment1 = post.comments.create!(:body => "first comment")
comment2 = post.comments.create!(:body => "second comment")
expect(post.reload.comments).to eq([comment2, comment1])
end
end
end
基本はRubyの書き方と同じです。コントローラーの記述する感覚で書きます。
-
post = Post.create!
- postを作成、保存します
-
create
メソッドはnew
+save
です -
!
をつけると保存できなかった時にその原因を出力してくれます
-
comment1 = post.comments.create!(:body => "first comment")
-
post
に紐づいたcomment
を:body => "first comment"
で作成する - comment2も同様です
-
-
expect(post.reload.comments).to eq([comment2, comment1])
-
post.reload.comments
の値が[comment2, comment1]
と一致するかどうかを確かめる -
post.reload.comments
のreload
はデータベースの値を再び取得するためのメソッドです
-
以上がモデルのテストの記述方法の一例の解説です。
これを元に自身のアプリケーションにも適応し、テストしてみてください。
疑問、気になるところがございましたら、質問、コメントよろしくお願いいたします!!
Author And Source
この問題について(【Rails】RSpecでモデルのテストをする), 我々は、より多くの情報をここで見つけました https://qiita.com/hitochan/items/1ef2e9908c24113960de著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .