Hoje quem desenvolve em Ruby On Rails tem nas mãos as poderosas ferramentas de testes, sejam eles para desenvolvimento orientado a testes ou orientado a comportamentos. E no início nós usávamos fixtures, que são arquivos que contém um amontoado de dados que serão usados em nossos testes.
Junto com a evolução dessas ferramentas nasceram os fixtures replacements. Nasceram para suprir a necessidade de organização e praticidade na utilização de fixtures. Atualmente temos Machinist, Factory Girl, Object Daddy, Dataset, Fixjour e FixtureReplacement. Certamente existem outros, mas esses são os mais famosos e usados.
Hoje vou mostrar como você pode usar o Factory Girl em seus testes/especificações.
Para instalar o Factory Girl:
gem install thoughtbot-factory_girl
Depois você tem que configurar no seu environment o uso da gem:
config.gem :thoughtbot-factory_girl, :lib => :factory_girl, :source => "http://gems.github.com"
Depois de configurado, vamos a criação de suas factories. Por padrão, o Factory Girl carrega automaticamente em seus testes as factories que se encontram em test/factories/*.rb
, spec/factories/*.rb
ou você pode criar todos os seus factories em um único arquivo e colocar em test/factories.rb
ou spec/factories.rb
. Você pode criar todos os seus factories em um único arquivo ou separar por model (O que eu acho mais organizado).
Antes de usar o Factory Girl nos seus testes você deve definir como cada model deve funcionar:
1 2 3 4 |
|
Você pode ter outras definições, por exemplo:
1 2 3 4 5 |
|
Você pode fazer vários tipos de factories, um para cada situação que você precisar, é mais fácil para fazer a manutenção.
Depois que você define suas factories é hora de realmente brincar com elas ;)
1 2 |
|
Quando você usa build, ele constroi um objeto não salvo.
1 2 |
|
Ao utilizar create, você está criando um objeto salvo.
Você pode criar uma hash com os atributos:
1
|
|
Você pode definir associações:
1 2 3 4 |
|
Basicamente o Factory Girl é isso, dessa forma você já pode abandonar as fixtures. Existe mais opções de uso do Factory Girl que você pode olhar a documentação oficial.