[Rails] Rspec을 사용한 테스트 코드
소개
Rspec을 도입하고 테스트 코드를 작성하려고합니다.
명령은 docker 환경의 명령을 사용합니다.
Gem 도입
group :development, :test do
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'faker', "~> 2.8"
end
docker-compose run web bundle install
docker-compose build
설치 완료.
Rspec 설정
docker-compose run webrails g rspec:install
위의 명령을 실행하면 다음 파일이 생성됩니다.
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
.rspc
--format documentation
코드 작성
spec/models/user_spec.rbrequire 'rails_helper'
describe User do
describe '#create' do
it "usernameとemail,passwordとpassword_comnfirmationが存在すれば登録できること" do
user = build(:user)
expect(user).to be_valid
end
it "usernameがない場合は登録できないこと" do
user = build(:user, username: nil)
user.valid?
expect(user.errors[:username]).to include("can't be blank")
end
it "emailがない場合は登録できないこと" do
user = build(:user, email: nil)
user.valid?
expect(user.errors[:email]).to include("can't be blank")
end
it "passwordがない場合は登録できないこと" do
user = build(:user, password: nil)
user.valid?
expect(user.errors[:password]).to include("can't be blank")
end
it "passwordが存在してもpassword_confirmationがない場合は登録できないこと" do
user = build(:user, password_confirmation: "")
user.valid?
expect(user.errors[:password_confirmation]).to include("doesn't match Password")
end
it "重複したemailがある場合は登録できないこと" do
user = create(:user)
another_user = build(:user, email: user.email)
another_user.valid?
expect(another_user.errors[:email]).to include("has already been taken")
end
it "passwordが6文字以上であれば登録できること" do
user = build(:user, password: "000000", password_confirmation: "000000")
expect(user).to be_valid
end
it "passwordが5文字以下であれば登録できないこと" do
user = build(:user, password: "00000", password_confirmation: "00000")
user.valid?
expect(user.errors[:password]).to include("is too short (minimum is 6 characters)")
end:grin:
end
end
spec/factories/users.rbFactoryBot.define do
factory :user do
username {"aaa"}
password {"000000"}
password_confirmation {"000000"}
sequence(:email) {Faker::Internet.email}
end
end
docker-compose run web bundle exec rspec
8 examples, 0 failures
그렇다면 테스트가 잘 통과하고 있습니다.
결론
이번에는 Rspec을 사용한 테스트에 들어갔습니다.
앞으로 컨트롤러 테스트도 실시해 갑니다.
끝까지 읽어 주셔서 감사합니다
Reference
이 문제에 관하여([Rails] Rspec을 사용한 테스트 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nishi-Shin/items/96e19ebd716b5b13ade1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
group :development, :test do
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'faker', "~> 2.8"
end
docker-compose run web bundle install
docker-compose build
설치 완료.Rspec 설정
docker-compose run webrails g rspec:install
위의 명령을 실행하면 다음 파일이 생성됩니다.
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
.rspc
--format documentation
코드 작성
spec/models/user_spec.rbrequire 'rails_helper'
describe User do
describe '#create' do
it "usernameとemail,passwordとpassword_comnfirmationが存在すれば登録できること" do
user = build(:user)
expect(user).to be_valid
end
it "usernameがない場合は登録できないこと" do
user = build(:user, username: nil)
user.valid?
expect(user.errors[:username]).to include("can't be blank")
end
it "emailがない場合は登録できないこと" do
user = build(:user, email: nil)
user.valid?
expect(user.errors[:email]).to include("can't be blank")
end
it "passwordがない場合は登録できないこと" do
user = build(:user, password: nil)
user.valid?
expect(user.errors[:password]).to include("can't be blank")
end
it "passwordが存在してもpassword_confirmationがない場合は登録できないこと" do
user = build(:user, password_confirmation: "")
user.valid?
expect(user.errors[:password_confirmation]).to include("doesn't match Password")
end
it "重複したemailがある場合は登録できないこと" do
user = create(:user)
another_user = build(:user, email: user.email)
another_user.valid?
expect(another_user.errors[:email]).to include("has already been taken")
end
it "passwordが6文字以上であれば登録できること" do
user = build(:user, password: "000000", password_confirmation: "000000")
expect(user).to be_valid
end
it "passwordが5文字以下であれば登録できないこと" do
user = build(:user, password: "00000", password_confirmation: "00000")
user.valid?
expect(user.errors[:password]).to include("is too short (minimum is 6 characters)")
end:grin:
end
end
spec/factories/users.rbFactoryBot.define do
factory :user do
username {"aaa"}
password {"000000"}
password_confirmation {"000000"}
sequence(:email) {Faker::Internet.email}
end
end
docker-compose run web bundle exec rspec
8 examples, 0 failures
그렇다면 테스트가 잘 통과하고 있습니다.
결론
이번에는 Rspec을 사용한 테스트에 들어갔습니다.
앞으로 컨트롤러 테스트도 실시해 갑니다.
끝까지 읽어 주셔서 감사합니다
Reference
이 문제에 관하여([Rails] Rspec을 사용한 테스트 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nishi-Shin/items/96e19ebd716b5b13ade1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
.rspc
--format documentation
spec/models/user_spec.rb
require 'rails_helper'
describe User do
describe '#create' do
it "usernameとemail,passwordとpassword_comnfirmationが存在すれば登録できること" do
user = build(:user)
expect(user).to be_valid
end
it "usernameがない場合は登録できないこと" do
user = build(:user, username: nil)
user.valid?
expect(user.errors[:username]).to include("can't be blank")
end
it "emailがない場合は登録できないこと" do
user = build(:user, email: nil)
user.valid?
expect(user.errors[:email]).to include("can't be blank")
end
it "passwordがない場合は登録できないこと" do
user = build(:user, password: nil)
user.valid?
expect(user.errors[:password]).to include("can't be blank")
end
it "passwordが存在してもpassword_confirmationがない場合は登録できないこと" do
user = build(:user, password_confirmation: "")
user.valid?
expect(user.errors[:password_confirmation]).to include("doesn't match Password")
end
it "重複したemailがある場合は登録できないこと" do
user = create(:user)
another_user = build(:user, email: user.email)
another_user.valid?
expect(another_user.errors[:email]).to include("has already been taken")
end
it "passwordが6文字以上であれば登録できること" do
user = build(:user, password: "000000", password_confirmation: "000000")
expect(user).to be_valid
end
it "passwordが5文字以下であれば登録できないこと" do
user = build(:user, password: "00000", password_confirmation: "00000")
user.valid?
expect(user.errors[:password]).to include("is too short (minimum is 6 characters)")
end:grin:
end
end
spec/factories/users.rb
FactoryBot.define do
factory :user do
username {"aaa"}
password {"000000"}
password_confirmation {"000000"}
sequence(:email) {Faker::Internet.email}
end
end
docker-compose run web bundle exec rspec
8 examples, 0 failures
그렇다면 테스트가 잘 통과하고 있습니다.
결론
이번에는 Rspec을 사용한 테스트에 들어갔습니다.
앞으로 컨트롤러 테스트도 실시해 갑니다.
끝까지 읽어 주셔서 감사합니다
Reference
이 문제에 관하여([Rails] Rspec을 사용한 테스트 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nishi-Shin/items/96e19ebd716b5b13ade1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Rails] Rspec을 사용한 테스트 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nishi-Shin/items/96e19ebd716b5b13ade1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)