단일 테스트 코드의 실현
전제 조건으로 이번에 사용자가 새로 로그인한 단일 테스트 코드를 제작한다.
테스트 내용은 nickname, email, password, password_4개의 confirmation을 테스트합니다.
준비
우선gemfile에서 테스트에 사용되는gem를 설명합니다
※ 기술한 부분은 그룹:development,:test do에서 기술해야 합니다.
만약 네가 여기에 묘사한다면, 너는 테스트할 때만 그것을 사용할 것이다
gemfilegroup :development, :test do
gem 'rspec-rails' #この4行を記述、テストするためのgem
gem 'factory_bot_rails' #この4行を記述、テンプレート的なやつを作るgem
gem 'faker' #この4行を記述、テキトーな文字列などを入れてくれるgem
gem 'pry-rails' #この4行を記述、binding.pryで処理を止めれるようにするgem
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
상술한 설명을 완성한 후 터미널에서 다음과 같은 조작을 실행한다
단말% bundle install
% rails g rspec:install
이 파일들을 완성하면
단말create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
.rspec 파일에 다음과 같은 내용을 기술하였다
.rspec--require spec_helper #デフォルトで入ってる
--format documentation #この行を追加
이 설명은 터미널에서 테스트 코드를 시각화하는 데 사용됩니다.
모형 준비
다음 명령을 사용하여 모델 생성(이번에 사용자 모델 생성)
단말% rails g rspec:model user
이걸 만들면...
단말 create spec/models/user_spec.rb
invoke factory_bot
create spec/factories/users.rb
테스트 내용 확인
spec/models/user_spec.rbrequire 'rails_helper'
RSpec.describe User, type: :model do
describe "ユーザー新規登録" do
it "nicknameが空では登録できない" do
# nicknameが空では登録できないテストコードを記述します
end
it "emailが空では登録できない" do
# emailが空では登録できないテストコードを記述します
end
it "passwordが空では登録できない" do
# passwordが空では登録できないテストコードを記述します
end
it "password_confirmationが空では登録できない" do
# password_confirmationが空では登録できないテストコードを記述します
end
end
end
해설을 알면 무시할 수 있어요.
① describe'하고 싶은 테스트 내용'do~end
"하고 싶은 테스트 내용"에 내용을 기술하고, 이번에는 사용자 관리 기능에 대한 테스트를 기술한다.
② it'조건'do~end
조건 섹션에서 테스트할 조건을 설명합니다.
잘 되었는지 확인하기 위해 명령을 집행하다
단말% bundle exec rspec spec/models/user_spec.rb
이게 터미널로 출력되면...
FactoryBot 및 Faker 사용
우선, 스펙 디렉터리에factories라는 디렉터리를 만듭니다. 그 중에서user.rb 만들기
만든 users.rb에서 다음과 같은 내용을 기술하다
spec/factories/users.rb(Faker를 사용하지 않을 경우)FactoryBot.define do
factory :user do
nickname {"test"}
email {"test@example"}
password {"000000"}
password_confirmation {password}
end
end
spec/factories/users.rb(Faker 사용 시)FactoryBot.define do
factory :user do
nickname {Faker::Name.initials(number: 2)}
email {Faker::Internet.free_email}
password {Faker::Internet.password(min_length: 6)}
password_confirmation {password}
end
end
이렇게 팩토리봇의 준비가 완성되었습니다!
①user_spec.rb 파일 RSpec로 돌아갑니다.describe 사용자, type:model do에 다음 세 줄 추가
② it do~end의 처리에서 실제로 이루어진 처리를 각각 기술한다
spec/models/user_spec.rbrequire 'rails_helper'
RSpec.describe User, type: :model do
#⬇︎この3行を追加
before do
@user = FactoryBot.build(:user)
end
#⬆︎この3行を追加
describe "ユーザー新規登録" do
it "nicknameが空では登録できない" do
@user.nickname = ""
@user.valid?
expect(@user.errors.full_messages).to include("Nickname can't be blank")
end
it "emailが空では登録できない" do
#⬇︎実際に行う処理
@user.email = ""
@user.valid?
expect(@user.errors.full_messages).to include("Email can't be blank")
#⬆︎実際に行う処理
end
it "passwordが空では登録できない" do
@user.password = ""
@user.valid?
expect(@user.errors.full_messages).to include("Password can't be blank")
end
it "password_confirmationが空では登録できない" do
@user.password_confirmation = ""
@user.valid?
expect(@user.errors.full_messages).to include("Password confirmation doesn't match Password")
end
end
end
실행하자!
단말% bundle exec rspec spec/models/user_spec.rb
이게 뜨면...
오류가 발생하면 잘못된 곳에서 binding합니다.pry를 작성하고 실행합니다!
spec/models/user_spec.rbit "nicknameが空では登録できない" do
@user.nickname = ""
@user.valid?
binding.pry #ここで処理が止まる
expect(@user.errors.full_messages).to include("Nickname can't be blank")
end
※ 처리를 중지하고 오류 내용을 확인하는 절차는 다음과 같습니다.
단말pry(#<RSpec::ExampleGroups::User>)> @user.valid? #エラーが出ているかの確認
pry(#<RSpec::ExampleGroups::User>)> @user.errors.full_messages #エラーメッセージの確認
pry(#<RSpec::ExampleGroups::User>)> exit #railsコンソールから脱出
Reference
이 문제에 관하여(단일 테스트 코드의 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/qwtr/items/ac5ee064737fca51c0f9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
group :development, :test do
gem 'rspec-rails' #この4行を記述、テストするためのgem
gem 'factory_bot_rails' #この4行を記述、テンプレート的なやつを作るgem
gem 'faker' #この4行を記述、テキトーな文字列などを入れてくれるgem
gem 'pry-rails' #この4行を記述、binding.pryで処理を止めれるようにするgem
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
% bundle install
% rails g rspec:install
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
--require spec_helper #デフォルトで入ってる
--format documentation #この行を追加
다음 명령을 사용하여 모델 생성(이번에 사용자 모델 생성)
단말
% rails g rspec:model user
이걸 만들면...단말
create spec/models/user_spec.rb
invoke factory_bot
create spec/factories/users.rb
테스트 내용 확인
spec/models/user_spec.rbrequire 'rails_helper'
RSpec.describe User, type: :model do
describe "ユーザー新規登録" do
it "nicknameが空では登録できない" do
# nicknameが空では登録できないテストコードを記述します
end
it "emailが空では登録できない" do
# emailが空では登録できないテストコードを記述します
end
it "passwordが空では登録できない" do
# passwordが空では登録できないテストコードを記述します
end
it "password_confirmationが空では登録できない" do
# password_confirmationが空では登録できないテストコードを記述します
end
end
end
해설을 알면 무시할 수 있어요.
① describe'하고 싶은 테스트 내용'do~end
"하고 싶은 테스트 내용"에 내용을 기술하고, 이번에는 사용자 관리 기능에 대한 테스트를 기술한다.
② it'조건'do~end
조건 섹션에서 테스트할 조건을 설명합니다.
잘 되었는지 확인하기 위해 명령을 집행하다
단말% bundle exec rspec spec/models/user_spec.rb
이게 터미널로 출력되면...
FactoryBot 및 Faker 사용
우선, 스펙 디렉터리에factories라는 디렉터리를 만듭니다. 그 중에서user.rb 만들기
만든 users.rb에서 다음과 같은 내용을 기술하다
spec/factories/users.rb(Faker를 사용하지 않을 경우)FactoryBot.define do
factory :user do
nickname {"test"}
email {"test@example"}
password {"000000"}
password_confirmation {password}
end
end
spec/factories/users.rb(Faker 사용 시)FactoryBot.define do
factory :user do
nickname {Faker::Name.initials(number: 2)}
email {Faker::Internet.free_email}
password {Faker::Internet.password(min_length: 6)}
password_confirmation {password}
end
end
이렇게 팩토리봇의 준비가 완성되었습니다!
①user_spec.rb 파일 RSpec로 돌아갑니다.describe 사용자, type:model do에 다음 세 줄 추가
② it do~end의 처리에서 실제로 이루어진 처리를 각각 기술한다
spec/models/user_spec.rbrequire 'rails_helper'
RSpec.describe User, type: :model do
#⬇︎この3行を追加
before do
@user = FactoryBot.build(:user)
end
#⬆︎この3行を追加
describe "ユーザー新規登録" do
it "nicknameが空では登録できない" do
@user.nickname = ""
@user.valid?
expect(@user.errors.full_messages).to include("Nickname can't be blank")
end
it "emailが空では登録できない" do
#⬇︎実際に行う処理
@user.email = ""
@user.valid?
expect(@user.errors.full_messages).to include("Email can't be blank")
#⬆︎実際に行う処理
end
it "passwordが空では登録できない" do
@user.password = ""
@user.valid?
expect(@user.errors.full_messages).to include("Password can't be blank")
end
it "password_confirmationが空では登録できない" do
@user.password_confirmation = ""
@user.valid?
expect(@user.errors.full_messages).to include("Password confirmation doesn't match Password")
end
end
end
실행하자!
단말% bundle exec rspec spec/models/user_spec.rb
이게 뜨면...
오류가 발생하면 잘못된 곳에서 binding합니다.pry를 작성하고 실행합니다!
spec/models/user_spec.rbit "nicknameが空では登録できない" do
@user.nickname = ""
@user.valid?
binding.pry #ここで処理が止まる
expect(@user.errors.full_messages).to include("Nickname can't be blank")
end
※ 처리를 중지하고 오류 내용을 확인하는 절차는 다음과 같습니다.
단말pry(#<RSpec::ExampleGroups::User>)> @user.valid? #エラーが出ているかの確認
pry(#<RSpec::ExampleGroups::User>)> @user.errors.full_messages #エラーメッセージの確認
pry(#<RSpec::ExampleGroups::User>)> exit #railsコンソールから脱出
Reference
이 문제에 관하여(단일 테스트 코드의 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/qwtr/items/ac5ee064737fca51c0f9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
require 'rails_helper'
RSpec.describe User, type: :model do
describe "ユーザー新規登録" do
it "nicknameが空では登録できない" do
# nicknameが空では登録できないテストコードを記述します
end
it "emailが空では登録できない" do
# emailが空では登録できないテストコードを記述します
end
it "passwordが空では登録できない" do
# passwordが空では登録できないテストコードを記述します
end
it "password_confirmationが空では登録できない" do
# password_confirmationが空では登録できないテストコードを記述します
end
end
end
% bundle exec rspec spec/models/user_spec.rb
우선, 스펙 디렉터리에factories라는 디렉터리를 만듭니다. 그 중에서user.rb 만들기
만든 users.rb에서 다음과 같은 내용을 기술하다
spec/factories/users.rb(Faker를 사용하지 않을 경우)
FactoryBot.define do
factory :user do
nickname {"test"}
email {"test@example"}
password {"000000"}
password_confirmation {password}
end
end
spec/factories/users.rb(Faker 사용 시)FactoryBot.define do
factory :user do
nickname {Faker::Name.initials(number: 2)}
email {Faker::Internet.free_email}
password {Faker::Internet.password(min_length: 6)}
password_confirmation {password}
end
end
이렇게 팩토리봇의 준비가 완성되었습니다!①user_spec.rb 파일 RSpec로 돌아갑니다.describe 사용자, type:model do에 다음 세 줄 추가
② it do~end의 처리에서 실제로 이루어진 처리를 각각 기술한다
spec/models/user_spec.rb
require 'rails_helper'
RSpec.describe User, type: :model do
#⬇︎この3行を追加
before do
@user = FactoryBot.build(:user)
end
#⬆︎この3行を追加
describe "ユーザー新規登録" do
it "nicknameが空では登録できない" do
@user.nickname = ""
@user.valid?
expect(@user.errors.full_messages).to include("Nickname can't be blank")
end
it "emailが空では登録できない" do
#⬇︎実際に行う処理
@user.email = ""
@user.valid?
expect(@user.errors.full_messages).to include("Email can't be blank")
#⬆︎実際に行う処理
end
it "passwordが空では登録できない" do
@user.password = ""
@user.valid?
expect(@user.errors.full_messages).to include("Password can't be blank")
end
it "password_confirmationが空では登録できない" do
@user.password_confirmation = ""
@user.valid?
expect(@user.errors.full_messages).to include("Password confirmation doesn't match Password")
end
end
end
실행하자!단말
% bundle exec rspec spec/models/user_spec.rb
이게 뜨면...
오류가 발생하면 잘못된 곳에서 binding합니다.pry를 작성하고 실행합니다!
spec/models/user_spec.rb
it "nicknameが空では登録できない" do
@user.nickname = ""
@user.valid?
binding.pry #ここで処理が止まる
expect(@user.errors.full_messages).to include("Nickname can't be blank")
end
※ 처리를 중지하고 오류 내용을 확인하는 절차는 다음과 같습니다.단말
pry(#<RSpec::ExampleGroups::User>)> @user.valid? #エラーが出ているかの確認
pry(#<RSpec::ExampleGroups::User>)> @user.errors.full_messages #エラーメッセージの確認
pry(#<RSpec::ExampleGroups::User>)> exit #railsコンソールから脱出
Reference
이 문제에 관하여(단일 테스트 코드의 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/qwtr/items/ac5ee064737fca51c0f9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)