Everyday-rails-rspec - 예비 부품 및 펌웨어
Contact
모델의 펌웨어입니다.# contact.yml
aaron:
firstname: "Aaron"
lastname: "Sumner"
email: "[email protected]"
john:
firstname: "John"
lastname: "Doe"
email: "[email protected]"
테스트에서, 우리는contact (:aaron) 를 사용하면 연락처를 얻을 수 있습니다.
펌웨어에 두 가지 문제가 있습니다. 저는 극력 피합니다.
예비 부품: 간단하고 유연하게 테스트 데이터를 만듭니다.
Factory Girl
이 도구는 부품처럼 쉽게 파괴되지 않고 사용하기 편리하며 생성된 테스트 데이터도 믿을 만하다.결점응용 프로그램에서 예비 위젯 사용하기
스펙 폴더에서 만들기
factories/contacts.rb
다음 코드 쓰기FactoryGirl.define do
factory :contact do
firstname "John"
lastname "Doe"
sequence(:email) { |n| "johndoe#{n}@example.com"}
end
end
** sequence는
FactoryGirl
호출할 때마다 n의 값이 +1 * * **** 모델에서 고유성 검증만 있으면 sequence (시퀀스) ***
테스트 코드:
require 'rails_helper'
describe Contact do
it 'has a valid build' do
expect(FactoryGirl.build(:contact)).to be_valid
end
it 'is invalid without a firstname' do
contact = FactoryGirl.build(:contact, firstname: nil) contact.valid?
expect(contact.errors[:firstname]).to include("can't be blank")
end
it 'is invalid with a duplicate email address' do
FactoryGirl.create(:contact, email: '[email protected]')
contact = FactoryGirl.build(:contact,email:'[email protected]')
contact.valid?
expect(contact.errors[:email]).to include("has already been taken")
end
end
*** FactoryGirl.build의 역할은 메모리에 새로운 테스트 대상을 저장하는 것이다.FactoryGirl.create의 역할은 대상을 응용 테스트 데이터베이스에 영구적으로 저장하는 것이다. ***
보다 사실적인 가상 데이터 생성 - Faker
여기서 우리는 가상 데이터 생성 도구인 Faker를 소개합니다.Faker를 사용한 후에 우리의 코드는 아래의 견본지가 되었다.그것은 더욱 진실해 보이는 테스트 데이터를 생성할 것이다
FactoryGirl.define do
factory :contact do
firstname { Faker::Name.first_name }
lastname { Faker::Name.last_name }
email { Faker::Internet.email }
end
end
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.