Fundamentos de RSpec
O curso trata da estrutura dos arquivos de spec do RSpec, a partir dos specs de um app Rails. Mostra como o RSpec.describe nomeia a classe testada, dando aos exemplos o described_class e um subject implícito, e como uma string extra limita um arquivo a uma fatia do comportamento. Também cobre o context como alias de describe para premissas comuns, os dois estilos de it e a diferença entre o let preguiçoso e o let! imediato. Fecha com a convenção de nomes de spec/ e as configurações do rails_helper.rb.
O que você vai aprender
- ✓Nomear a classe testada com RSpec.describe e described_class
- ✓Agrupar exemplos sob uma premissa comum com context
- ✓Escrever exemplos it em bloco e no estilo de uma linha com matchers
- ✓A diferença entre o let preguiçoso e o let! imediato
- ✓Como os caminhos em spec/ espelham os de app/
- ✓As configurações do rails_helper.rb para FactoryBot, transações e shoulda-matchers
A recompensa deste app: RSpec, o framework que ele escolheu
Essa é a saída de terminal da suíte de specs deste app, sem edição. Cada linha indentada vem de um describe, context ou it num único arquivo, spec/services/identity/account_update_service_spec.rb. O trabalho deste curso é mostrar como esse arquivo produz essa saída.
Ler a aula completa grátis →Currículo
7 aulasA recompensa deste app: RSpec, o framework que ele escolheu
Mostra a saída em formato de documentação de um spec deste app e apresenta describe, context, it e let.
RSpec.describe: nomeando o que é testado, duas formas
Trata do RSpec.describe com uma classe ou com classe e string, do described_class e do subject implícito.
context: agrupando exemplos relacionados sob uma premissa compartilhada
Explica o context como alias de describe que agrupa exemplos sob uma premissa com nome e pode sobrescrever o subject.
it: o exemplo em si, em dois estilos que este app usa
Compara o estilo em bloco do it com o estilo de uma linha usando is_expected e matchers do shoulda-matchers.
let vs let!: preguiçoso vs imediato, e as poucas linhas que mostram a diferença
Contrasta o let preguiçoso com o let! imediato, usando um spec de query e o código-fonte do rspec-core.
spec/ espelha app/: a convenção de nomes, e a configuração RSpec deste app
Liga arquivos de spec aos arquivos do app e explica as configurações do rails_helper.rb e o formato de documentação.
Juntando tudo: o framework, de dentro para fora
Revisa o modelo de describe, context, it e let e apresenta um desafio em Ruby puro, o format_examples.