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'
Reference
この問題について(RailsでのRSPECテストの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@rails/Rails-RSPECテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol