Testes de integração
Este curso trata de request specs num app Rails, com base nos arquivos de spec/requests/ do próprio app. Ele explica o que o type: :request prepara e como get, post, patch e delete levam uma requisição pelo roteador, pelo middleware e pelo controller, sem navegador. Mostra as afirmações sobre a resposta com have_http_status, response.body e response.status. Compara também request specs com system specs e controller specs. As aulas seguintes cobrem um helper sign_in reutilizável, exemplos de CRUD e JSON e testes de controle de acesso e caminhos de falha.
O que você vai aprender
- ✓O que a tag type: :request prepara e quais helpers de verbo HTTP o app usa
- ✓Como checar respostas com have_http_status, response.body e response.status
- ✓As diferenças entre request specs, system specs e controller specs
- ✓Um helper sign_in reutilizável, limitado aos request specs com config.include
- ✓Afirmações sobre mudanças no banco em specs de CRUD e sobre JSON em specs de API
- ✓Testes de controle de acesso, de login exigido e de falhas de validação
O que um request spec de fato é
O curso logo antes deste, Testes de sistema: Capybara, passou sete aulas no type: :system: um navegador, JavaScript e a DSL do Capybara. Ele fechou nomeando a camada de baixo. É o spec/requests/ deste app, com dezenas de arquivos e algumas centenas de exemplos que já provam a correção do lado do…
Ler a aula completa grátis →Currículo
7 aulasO que um request spec de fato é
Explica a tag type: :request, os helpers de verbo HTTP do app e a ida e volta completa no servidor.
As afirmações de resposta que os specs deste app fazem
Trata de have_http_status, response.body e response.status, e mostra que o app faz o parse de JSON à mão.
Request spec vs. system spec vs. controller spec: três abordagens, uma desaconselhada
Compara request specs, system specs e controller specs, e explica por que os times do Rails e do RSpec desaconselham o último.
O helper sign_in reutilizável deste app
Apresenta o helper sign_in, um POST de login real incluído só nos request specs via config.include.
Exemplos de CRUD e de API JSON, dos specs deste app
Mostra specs de CRUD que checam mudanças no banco e specs de JSON que fazem parse do corpo da resposta.
Testando o que não deve acontecer: controle de acesso e caminhos de falha
Testa o controle de acesso nos dois sentidos, o redirecionamento para o login e as falhas de validação.
Juntando tudo: a ida e volta, e para onde vai o passeio pelos testes deste app
Revisa o curso e propõe um desafio em Ruby puro que espelha como o have_http_status mapeia symbols para faixas.