Red-green-refactor: a disciplina, e o spec por trás deste curso

Prévia grátis 3 min de leitura

O que os testes deste app rodam

bundle exec rspec spec/services/identity/account_update_service_spec.rb
........

Finished in 0.27163 seconds (files took 1.61 seconds to load)
8 examples, 0 failures

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.

Três palavras, e o que cada uma significa

Red-Green-Refactor nomeia três estados em que um trecho de código e o teste dele podem estar, numa ordem fixa, repetida. Red: um teste existe e falha, de propósito, porque o comportamento que ele verifica ainda não existe. Green: a menor mudança que faz esse teste passar, e nada mais. Refactor: mudar a forma do código, nomes e estrutura, sem mudar o que ele faz. Você só faz isso com a suíte green, para que qualquer mudança de comportamento apareça na hora como uma falha nova.

A ordem é a disciplina inteira. Escrever o teste depois que o código já funciona pula o Red, e pular o Red é o problema central deste curso, a partir da próxima aula.

Um par de arquivos, seguido pelas sete aulas

Este curso não monta um exemplo de brinquedo. Ele segue um arquivo que este app já entrega, app/services/identity/account_update_service.rb, e o spec que o testa, spec/services/identity/account_update_service_spec.rb. O serviço atualiza nome, email, fuso horário e senha de um usuário a partir do formulário de configurações da conta. O spec tem oito exemplos em quatro blocos context: dados básicos, fuso horário, senha, e dados básicos com senha juntos.

Esse último context existe por causa de um bug que esse arquivo teve, corrigido no commit 999182a, "Fix: AccountUpdateService could partially commit on a rejected password change." A mensagem do commit diz como foi testado: "Added regression specs proving the fix (and proving they fail against the previous version)." Essa frase é Red-Green-Refactor na prática, e as próximas aulas a percorrem.

O que este curso cobre

A aula 2 trata do Red: por que um teste que nunca falhou nunca provou nada, percorrido contra o bug e o teste de regressão escrito para ele. A aula 3 trata do Green, a menor mudança que o fez passar, com o diff do commit. A aula 4 explica por que o Green só significa algo porque o Red veio antes. A aula 5 trata do Refactor, feito só com a suíte green. A aula 6 lê o context conjunto do spec como uma única história de Red-Green-Refactor. A aula 7 trata o ciclo como um loop e aponta para onde os cursos de testes deste app vão a seguir.

Aula 1 de 7 · grátis

Continue com a aula 2

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.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...