O FactoryBot é uma ferramenta amplamente utilizada no desenvolvimento de aplicações Ruby on Rails, pois ele permite prototipar instâncias de models do seu sistema com todas as características necessárias para testes. Uma funcionalidade muito legal é podermos criar múltiplas instâncias de um model com características diferentes. Para isso vamos usar os métodos sequence
e create_list
. Vamos usar nesse exemplo um model User
que possui o atributo email
. A factory
ficaria assim:
FactoryBot.define do
factory :user do
email { 'user@email.com' }
end
end
Se nosso teste chamar create_list(:user, 3)
, seriam criadas três instâncias diferentes de user
com o mesmo endereço de e-mail user@email.com
. Usando sequence
configuramos a factory
a criar instâncias com e-mails diferentes:
FactoryBot.define do
factory :user do
sequence(:email) { |n| "user#{n}@email.com" }
end
end
Agora se criarmos mais de uma instância de User
dentro de um mesmo teste, o FactoryBot vai criar instâncias com endereços de e-mail diferentes: user1@email.com, user2@email.com, user3@email.com.
O FactoryBot também permite customização de factories
com traits
.