Domínio de testes: matchers
O curso estuda matchers do RSpec a partir de uma suíte Rails com 204 arquivos de spec, sem matchers próprios e sem exemplos compartilhados. Ele explica o que um matcher faz, como ler uma mensagem de falha e quais matchers embutidos, do rspec-rails e do shoulda-matchers servem para as asserções comuns. Depois mostra como escrever matchers próprios, como usar exemplos e contextos compartilhados e como escolher entre factories, helpers e matchers. A última aula propõe três extrações para a suíte e explica por que parar nelas.
O que você vai aprender
- ✓Como um matcher decide se um valor casa e explica a falha
- ✓Por que dar o valor ao matcher e não um booleano calculado a partir dele
- ✓Quando usar eq, contain_exactly, change, raise_error e have_attributes
- ✓Como escrever matchers próprios com match, chain, as duas mensagens de falha e description
- ✓Como usar exemplos e contextos compartilhados com it_behaves_like e include_context
- ✓Quando usar factories, helpers, matchers ou exemplos compartilhados, e quando manter a duplicação
Os matchers que esta suíte já usa
Este repositório tem 204 arquivos de spec: models, queries, requests, services, policies, helpers, jobs e mailers. Ler alguns mostra o que a suíte já faz bem, e uma coisa que ela não faz de jeito nenhum.
Ler a aula completa grátis →Currículo
7 aulasOs matchers que esta suíte já usa
Define o que é um matcher, analisa as escolhas do spec de model da suíte e aponta o que falta nela.
Lendo uma mensagem de falha
Compara quatro mensagens de falha para o mesmo erro e explica por que o matcher deve receber o próprio valor.
Os matchers que valem conhecer
Apresenta matchers úteis para igualdade, coleções, change, erros, atributos, composição e respostas e jobs do Rails.
Matchers próprios
Mostra como escrever um matcher próprio com as duas mensagens de falha, e quando um embutido ou predicado serve melhor.
Exemplos e contextos compartilhados
Explica exemplos e contextos compartilhados, a diferença entre it_behaves_like e include_examples, e a parametrização com argumentos ou blocos.
Matchers, helpers e factories
Define quando usar factories, helpers, matchers ou exemplos compartilhados, e o custo de abstrair demais nos testes.
Juntando tudo: o que extrair
Propõe três extrações em ordem de valor: exemplo de recurso com dono, exemplo de objeto de consulta e matcher de CSP.