Criando múltiplos objetos com FactoryBot

Dicas - 02/Mar/2020 - por André Kanamura

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.

Referências

Foto de perfil do autor
André Kanamura

Dev na Campus Code