Help us understand the problem. What is going on with this article?

【Rails】RSpecでモデルのテストをする

概要

モデルのテストの記述方法を解説します

詳しくはRSpecの公式サイトのモデルに関するページを参考にしてください
今回は一例としてPostモデルのテストを解説します。
前提としてPostにはアソシエーションされたCommentモデルが存在します。

spec/models/post_spec.rb
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.commentsreloadはデータベースの値を再び取得するためのメソッドです

以上がモデルのテストの記述方法の一例の解説です。
これを元に自身のアプリケーションにも適応し、テストしてみてください。

疑問、気になるところがございましたら、質問、コメントよろしくお願いいたします!!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away