Dados de teste: FactoryBot
Este curso trata de dados de teste num app Rails que usa RSpec e FactoryBot no lugar das fixtures YAML clássicas. Começa pelo que é uma fixture do Rails, com citações dos comentários de documentação do próprio Rails, e mostra que este app não tem nenhuma. Depois lê os arquivos de factory do app: atributos, sequence, traits escritas à mão e as traits de enum que o FactoryBot gera sozinho. Compara create, build, build_stubbed e attributes_for, explica como associações montam registros relacionados e pesa a troca entre fixtures e factories. Fecha com um desafio de montador de objetos em Ruby puro.
O que você vai aprender
- ✓O que é uma fixture YAML clássica do Rails e como o Rails a carrega
- ✓A DSL de factory: blocos de atributo, contadores de sequence e sobrescritas na chamada
- ✓Traits escritas à mão e as traits de enum que o FactoryBot define sozinho
- ✓As diferenças entre create, build, build_stubbed e attributes_for
- ✓Como associações de factory montam e salvam registros relacionados numa chamada
- ✓A troca entre fixtures e factories neste app
O que é uma fixture clássica do Rails, e por que este app não tem nenhuma
O active_record/fixtures.rb, instalado com o Rails 8.1.3.1 deste app, abre com uma definição: "Fixtures are a way of organizing data that you want to test against; in short, sample data." São YAML puro, um arquivo por model, em test/fixtures/, a convenção do Minitest:
Ler a aula completa grátis →Currículo
7 aulasO que é uma fixture clássica do Rails, e por que este app não tem nenhuma
Define uma fixture YAML clássica pelos comentários do Rails e mostra que este app não usa nenhuma.
A DSL de factory: atributos e sequence, checados nos arquivos deste app
Lê a factory de usuário para explicar blocos de atributo, contadores de sequence e sobrescritas na chamada.
Traits: quatro escritas à mão, e muitas que ninguém escreveu
Trata das quatro traits escritas à mão e das traits que o FactoryBot gera a partir dos enums.
create, build, build_stubbed, attributes_for: quatro estratégias, checadas
Compara create, build, build_stubbed e attributes_for pelo código do FactoryBot e mostra quanto a suíte usa cada um.
Associações, montadas e salvas na hora
Mostra como declarações association montam e salvam registros relacionados numa chamada, e como sobrescrevê-las.
A troca: por que as factories venceram aqui
Pesa a velocidade das fixtures para dados estáticos contra a flexibilidade das factories e explica a escolha do app.
Juntando tudo: um montador de objetos com sequências, em Ruby puro
Resume o padrão de padrões, sequências e sobrescritas e propõe um desafio de montador de objetos em Ruby puro.