Testes: shared examples
O curso trata dos shared examples do RSpec a partir da repetição nos request specs deste app. Começa por uma afirmação de redirect para a página de entrada, escrita à mão em vários arquivos. O código-fonte do RSpec mostra como o shared_examples guarda um bloco com nome para avaliação posterior. Mostra também como o it_behaves_like cria um grupo aninhado e o include_examples inclui o conteúdo direto no grupo atual. Por fim, vêm argumentos, blocos de personalização, uma guarda de admin que se desviou e um desafio em Ruby puro.
O que você vai aprender
- ✓Como o shared_examples guarda um bloco com nome e como o escopo define onde ele pode ser buscado
- ✓Como o it_behaves_like cria um grupo de exemplos aninhado com o rótulo "behaves like"
- ✓Como o include_examples e o include_context avaliam o conteúdo compartilhado direto no grupo atual
- ✓Como passar argumentos e um bloco de personalização para um shared example
- ✓Como achar afirmações repetidas numa suíte de specs, inclusive as que já se desviaram
- ✓O ArgumentError levantado quando o nome de um shared example não está registrado
A repetição que a suíte de specs deste app já tem
spec/requests/execution_spec.rb:
Ler a aula completa grátis →Currículo
7 aulasA repetição que a suíte de specs deste app já tem
Cinco request specs repetem à mão a mesma afirmação de redirect, e a suíte nunca usa shared_examples.
shared_examples define conteúdo de spec reutilizável uma vez
O shared_examples guarda um bloco com nome para avaliação posterior, com regras de escopo e dois aliases.
it_behaves_like cria um context aninhado
O código do RSpec mostra o it_behaves_like envolvendo o conteúdo compartilhado num novo grupo aninhado.
include_examples achata o conteúdo no grupo atual
O include_examples e o include_context avaliam o bloco compartilhado direto no grupo atual, sem aninhamento.
Passando argumentos e blocos pra um shared example
Uma guarda só de admin repetida em quatro arquivos mostra como argumentos e blocos chegam ao shared example.
Onde a suíte de specs deste app ganharia
Um mapa de onde os shared examples caberiam na suíte, o que fica fora e o erro de nome ausente.
Juntando tudo: nomeie uma vez, reutilize pelo nome
Uma revisão do modelo mental e um desafio em Ruby puro que monta um registro de shared examples em miniatura.