Open shaynekang opened 9 years ago
FactoryGirl을 활용할 때 몇 가지 원칙을 지키면 간결하고 명확한 단위테스트를 작성할 수 있습니다.
#build
#create
sequence
5번의 경우 부연설명을 하자면, 단위테스트 결과를 비교하는데 3번에서 지정한 값을 사용한다면 매 번 [spec/factories.rb](https://github.com/Donut Works/Ari/blob/2ca4af182a8acdaba71e628c3358c19ca14f6d09/spec/factories.rb)를 살펴봐야 합니다. 단위테스트가 직관적이지 않게 되죠. 그런고로 단위테스트 안에서 명시적으로 할당하는 것이 좋습니다.
가령 spec/unit/sms_sender.rb 코드의 다음 부분은
user = FactoryGirl.build(:user) user.phone_number = "010-5445-0754" user.save! user2 = FactoryGirl.build(:user) user2.username = "Tom" user2.email = "tom@donutworks.com" user2.phone_number = "010-3232-5374" user2.save! notice = FactoryGirl.build(:notice) notice.save!
저라면 이렇게 수정할 것 같습니다.
user = FactoryGirl.create(:user, phone_number: "010-5445-0754") user2 = FactoryGirl.create(:user, phone_number: "010-3232-5374") notice = FactoryGirl.create(:notice)
단위테스트 구조상 username, email이 필요하지 않으니 굳이 선언해줄 필요가 없고, build - save!는 create로 고쳐줄 수 있습니다. 동시에 create의 인자 안에 phone_number를 넣어줄 수 있죠.
username
email
build
save!
create
phone_number
다른 코드도 살펴보고 이와 같이 수정하면 좋겠네요. ㅎㅎ
그리고 FactoryGirl은 다양한 헬퍼들이 많으니 살펴보면 큰 도움이 될 겁니다. 찾아보니 이 아티클이 가장 짧고 유익한 것 같네요. ㅎㅎ
FactoryGirl을 활용할 때 몇 가지 원칙을 지키면 간결하고 명확한 단위테스트를 작성할 수 있습니다.
#build
를, DB에 저장할 필요가 있다면#create
를 활용한다.#build
,#create
에서 한꺼번에 넣어준다.sequence
를 활용해 매 번 다른 값을 생성한다.5번의 경우 부연설명을 하자면, 단위테스트 결과를 비교하는데 3번에서 지정한 값을 사용한다면 매 번 [spec/factories.rb](https://github.com/Donut Works/Ari/blob/2ca4af182a8acdaba71e628c3358c19ca14f6d09/spec/factories.rb)를 살펴봐야 합니다. 단위테스트가 직관적이지 않게 되죠. 그런고로 단위테스트 안에서 명시적으로 할당하는 것이 좋습니다.
가령 spec/unit/sms_sender.rb 코드의 다음 부분은
저라면 이렇게 수정할 것 같습니다.
단위테스트 구조상
username
,email
이 필요하지 않으니 굳이 선언해줄 필요가 없고,build
-save!
는create
로 고쳐줄 수 있습니다. 동시에create
의 인자 안에phone_number
를 넣어줄 수 있죠.다른 코드도 살펴보고 이와 같이 수정하면 좋겠네요. ㅎㅎ