Một số cách tránh dry data test khi viết rspec với FactoryGirl
1. Đặt vấn đề. Với nhưng người làm việc với Rails chắc hẳn đã từng và đang viết rspec hằng ngày. Trong khi viết rspec thì việc tạo data test khác là quan trọng việc tạo data test giúp cho chúng ta dễ dàng viết code test hơn. Và một gem mạnh mẽ để tạo data đó là "FactoryGirl".Mặc dù có thể bạn ...
1. Đặt vấn đề.
Với nhưng người làm việc với Rails chắc hẳn đã từng và đang viết rspec hằng ngày. Trong khi viết rspec thì việc tạo data test khác là quan trọng việc tạo data test giúp cho chúng ta dễ dàng viết code test hơn. Và một gem mạnh mẽ để tạo data đó là "FactoryGirl".Mặc dù có thể bạn làm nhiều với gem này nhưng để thực sự tạo ra những data không thừa không thiếu nhằm cho việc chạy test nhanh hơn hay tránh duplidate data,.. Thì hôm nay e/m muốn nếu ra một số cách mà e/m thường làm khi tạo data test và cũng như một số cú pháp cơ bản của FactoryGirl.
2.Nôi dung
2.1 Squences trong factory
Vấn đề chúng ta thường gặp ở đây là nếu như bạn muốn tạo user có email có có tên là "emai_1@gmail.com", email_2@gmail.com,.. và cứ thế chúng ta có thể sẽ viết nó như sau:
FactoryGirl.define do factory:book do ........... email " email_1@gmail.com .......... end end
Với cách viết như trên thì sau khi test thì sẽ bị duplicate email ta dùng Squences như sau:
```` FactoryGirl.define do factory:book do ........... sequence(:email) {|n|"email#{n}@gmail.com"} .......... end end ```
2.2 Association trong FatoryGirl
Giả sử ta có model Note có quan hệ với user và project thì đơn giản ta sẽ khởi tạo như sau:
FactoryGirl.define do factory:note do message"My important note." association:project association:user end end
2.3 Thêm alias cho model factories
Trong khi test nhiều khi ta muốn dùng một alias cho data để có thể phù hợp với bối cảnh test ta có sử dụng bằng cách thêm alias như sau:
FactoryGirl.define do factory:user, aliases:[:owner] do ........... end end ```
2.4 Tránh duplicate trong factory
Ở trên mình hơn lan man về FactoryGirl một chút