RailsでのRSPECテストの作成


ライブラリのインストール


テストを円滑に行うためにalspecとfactorybotジャムを追加します.Gemfile
group :test do
  gem 'factory_bot_rails', '~> 6.1'
  gem 'rspec-rails', '~> 4.0', '>= 4.0.2'
end
運転bundle install命令ジャム取り付け

テストの作成


ファクトリ作成:手動でレコードを作成する作業量を削減します.IDはauto-incrementであり、タイトルは任意に与えられる.Faker Jamを使用する場合は、有用なランダム名を指定することもできます.
# spec/factories/genres.rb
FactoryBot.define do

  factory :genre do
    sequence(:id) {|n| n }
    title { "테스트 장르1" }
  end

end
≪モデル・テストの作成|Create Model Test|emdw≫:アクティブなレコード・テーブルに検証モデルのコードを追加します.
# rspec spec/models/genre_spec.rb --fail-fast
require 'rails_helper'

RSpec.describe Genre, :type => :model do

  it "모델 생성 성공 해야 함" do
    expect(Genre.new).not_to be_valid
  end

  it "모델 저장 성공 해야 함" do
    genre = FactoryBot.create(:genre)
    expect(genre).to be_valid
  end
  
end

テスト結果


大丈夫です.よく成功しました.もっと複雑で多様な柚子箱を追加できるようになりました.

APIリクエストテストの追加


RSPECではモデルのみならずリクエストも検証できます.
# rspec spec/requests/user_genres_spec.rb  --fail-fast
require 'rails_helper'

RSpec.describe "User Genres API testing", type: :request do
  # 기존 장르 클리어
  Genre.in_batches(of: 10000).delete_all
  
  it "유저가 아이콘을 클릭 하면 장르 목록이 나와야 한다." do
    user1 = FactoryBot.create(:user)
    genre1 = FactoryBot.create(:genre)
    genre2 = FactoryBot.create(:genre)

    # 장르를 얻는다.
    get '/api/v1/asks/user_index_genres/', params: {}, headers: {'Authorization' => get_user_token(user1)}
    expect(response).to have_http_status(200)
    rtv = JSON.parse response.body
    genres = rtv['content']['genres']
    expect(genres.length).to eq 2
  end

end
参考として、通関時にrailsベースdestroy_all関数の性能が最も悪いため、以下のライブラリを使用した.
gem 'delete_in_batches', '~> 0.2.0'