Cultura de testes: RGR
O curso apresenta a disciplina Red-Green-Refactor a partir de um serviço e de um spec deste app: o Identity::AccountUpdateService e o arquivo RSpec que o testa. Ele acompanha o commit 999182a, que corrigiu um bug em que uma troca de senha rejeitada ainda deixava a troca de nome fazer commit. As aulas percorrem o teste de regressão como Red contra o código antigo e como Green contra a correção. Também explicam por que um teste que nunca falhou não prova nada, como refatorar só com a suíte green e por que o ciclo se repete.
O que você vai aprender
- ✓Os três estados do Red-Green-Refactor e a ordem fixa entre eles
- ✓Por que um teste que nunca falhou não prova nada sobre o bug que protege
- ✓Fazer a menor mudança que deixa um teste red em green
- ✓Como uma transação faz rollback com exceção levantada, mas faz commit com retorno falso
- ✓Refatorar só com a suíte green, sem mudar comportamento
- ✓Ler exemplos negativos e positivos como um ciclo completo
Red-green-refactor: a disciplina, e o spec por trás deste curso
Esse é o arquivo de spec que este curso acompanha, rodado para este curso. A linha 60 do Gemfile diz gem "rspec-rails": este app é testado com RSpec, não com Minitest. A disciplina que este curso ensina funciona do mesmo jeito nos dois frameworks, e todo exemplo vem do código deste app.
Ler a aula completa grátis →Currículo
7 aulasRed-green-refactor: a disciplina, e o spec por trás deste curso
Apresenta os três estados do Red-Green-Refactor e o par de serviço e spec seguido em todas as aulas.
Red: um teste que nunca falhou nunca provou nada
Percorre o código anterior à correção e mostra por que o teste de regressão falha contra ele: o Red.
Green: a menor mudança que faz passar
Mostra a correção do commit, com escritas usando bang, e o mesmo teste passando como Green.
Por que green só significa algo porque red aconteceu primeiro
Explica por que um teste que só rodou contra código correto não prova nada, com um teste falho de exemplo.
Refactor: só com a suíte green
Trata do refactor feito só com a suíte green, com uma remodelagem de update_password! que mantém o comportamento.
O ciclo inteiro, num context do spec deste app
Lê o context conjunto do spec como um ciclo: dois casos negativos para o bug e um positivo.
Juntando tudo: RGR como um loop, não uma checklist
Revisa o ciclo inteiro e trata o Red-Green-Refactor como um loop que se repete a cada comportamento novo.