【초보자용】factory_bot을 이용한 더미 데이터의 작성 방법
6653 단어 RSpecRailsFactoryBot
factory_bot이란?
쉽게 더미의 인스턴스를 만들 수있는 젬입니다. 다른 파일에서 미리 각 클래스의 인스턴스에 정하는 프로퍼티를 설정해 두고, spec 파일로부터 메소드를 이용해 그대로의 인스턴스를 작성합니다.
도입 방법
Gemfile에 다음과 같이 기재
Gemfilegroup :development, :test do
#省略
gem 'factory_bot_rails'
end
bundle install합니다.
spec 디렉토리 내에 'factories'라는 디렉토리를 만들고 (이번에는 user를 테스트하기 때문에) users.rb라는 파일을 만듭니다.
factory_bot을 사용하여 사용자 정의
방금 만든 factories/users.rb
안에 더미 사용자를 정의합니다.
factories/users.rbFactoryBot.define do
factory :user do
name {"tanu"}
email {"[email protected]"}
password {"11111111"}
password_confirmation {"11111111"}
end
end
정의한 사용자를 테스트 내에서 사용
앞서 정의한 user는 아래와 같이 사용합니다.
spec/model/user_spec.rbdescribe User do
describe '#create' do
it 'is invalid without a name' do
user = FactoryBot.build(:user, name: nil)
user.valid?
expect(user.errors[:name]).to include("を入力してください")
end
end
end
이것은 아래 내용과 함께입니다. (아래는 factory_bot을 사용하지 않고 동일한 내용을 기술한 예)
describe User do
describe '#create' do
it 'is invalid without a name' do
user = User.new(name: "", email: "[email protected]", password: "11111111", password_confirmation: "11111111")
user.valid?
expect(user.errors[:name]).to include("を入力してください")
end
end
end
또한,
user = FactoryBot.build(:user, name: nil)
FactoryBot
는 선택 사항이며 위는
user = build(:user, name: nil)
라고 쓸 수도 있습니다.
build 및 create 메서드
factory_bot의 메소드 중
group :development, :test do
#省略
gem 'factory_bot_rails'
end
FactoryBot.define do
factory :user do
name {"tanu"}
email {"[email protected]"}
password {"11111111"}
password_confirmation {"11111111"}
end
end
describe User do
describe '#create' do
it 'is invalid without a name' do
user = FactoryBot.build(:user, name: nil)
user.valid?
expect(user.errors[:name]).to include("を入力してください")
end
end
end
describe User do
describe '#create' do
it 'is invalid without a name' do
user = User.new(name: "", email: "[email protected]", password: "11111111", password_confirmation: "11111111")
user.valid?
expect(user.errors[:name]).to include("を入力してください")
end
end
end
user = FactoryBot.build(:user, name: nil)
user = build(:user, name: nil)
build
... 인스턴스를 생성하는 메소드. new와 동일 create
... 데이터의 save까지를 실시한다. 그러나 save 된 데이터는 한 번의 테스트가 끝나면 사라집니다. 라는 특징이 각각 있다고 합니다.
리시버의 "FactoryBot"에 대한 설명 생략
게다가 rails_helper에 아래와 같은 기술을 해 두는 것으로, "FactoryBot"라고 하는 기술은 생략할 수 있다고 합니다.
spec/rails_helper.rb
RSpec.configure do |config|
#下記の記述を追加
config.include FactoryBot::Syntax::Methods
#省略
end
위의 설명을 통해 테스트 설명은 다음과 같이 생략 할 수 있습니다.
user = build(:user, name: nil)
테스트는 확실히 학습해 두도록(듯이) 주위로부터 여러가지 어드바이스를 받습니다만, 좀처럼 안쪽이 깊네요. 다시 접어보고 복습하고 싶습니다.
Reference
이 문제에 관하여(【초보자용】factory_bot을 이용한 더미 데이터의 작성 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanutanu/items/bd900ce5cc00794e13e5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)