Git Product home page Git Product logo

26.4_testes_em_camadas's Introduction

Esse é um repositório para o conteúdo de Arquitetura de Software - Testando as Camadas.

Antes de iniciar

Crie um fork desse projeto e para isso siga esse tutorial de como realizar um fork.

Após feito o fork, clone o repositório criado para o seu computador.

Antes de fazer os exercícios, siga os seguintes passos:

  • Crie uma nova branch.
  • Execute npm install para instalar suas dependências.
  • Lembre-se de desativar sua instância do MongoDB quando for utilizar o mongodb-memory-server para testes.
  • Execute npm test para verificar os testes existentes.

O resultado seria algo como na imagem abaixo.

Saída do comando npm test

Após a solução dos exercícios, abra um PR no seu repositório forkado e, se quiser, mergeie para a master, sinta-se a vontade!

Atenção! Quando for criar o PR você irá se deparar com essa tela:

PR do exercício

É necessário realizar uma mudança. Clique no base repository como na imagem abaixo:

Mudando a base do repositório

Mude para o seu repositório. Seu nome estará na frente do nome dele, por exemplo: antonio/TicTacToe. Depois desse passo a página deve ficar assim:

Após mudança

Agora basta criar o PULL REQUEST clicando no botão Create Pull Request.

Para cada PR realize esse processo.

Revisando

Nos exercícios iremos implementar todas as camadas, para adicionar um endpoint que recebe o ID de um filme específico que retorna os detalhes desse filme.

Esse endpoint terá os seguintes cenários:

  • Quando é encontrado um filme com o ID passado pela pessoa usuária deverá retornar um objeto com todas as propriedades do filme e o código http 200 OK no status da response.
  • Quando não é encontrado nenhum filme com o ID passado pela pessoa usuária deverá responder com código http 404 Not Found no status da response e com a mensagem “Filme não encontrado.”

Exercício 1:

Seguindo o TDD, implemente a camada de model necessária para o end-point, aplicando os comportamentos para atender aos requisitos:

  • Crie os testes da camada de model. Como essa camada é responsável por realizar as operações no BD, adicione as operações necessárias para que o endpoint funcione conforme esperado.
  • Implemente os métodos para atender aos cenários descritos nos testes.
  • Faça os ajustes necessários nos testes de acordo com sua implementação. Lembre-se de isolar qualquer operação de leitura e escrita.

Exercício 2:

Também seguindo o TDD, implemente a camada de service do endpoint, certifique-se de garantir que os cenários descritos nos requisitos serão atendidos.

  • Crie os testes da camada de service. Lembre-se que essa camada é responsável pelas regras de negócio, e deverá fazer os tratamentos necessários com o input recebido do controller e com o output recebido do model.
  • Implemente os métodos necessários para atender aos testes.
  • Faça os ajustes necessários nos testes de acordo com sua implementação. Lembre-se de isolar a camada das demais.

Exercício 3:

Também seguindo o TDD, implemente a camada de controller do endpoint, certifique-se de garantir que os cenários descritos nos requisitos serão atendidos.

  • Crie os testes da camada de controller. Lembre-se que essa camada é responsável por toda a comunicação com a pessoa usuária, devendo tratar seu input e output. Outro ponto de atenção é que diferente das outras camadas, os controllers são middlewares e será necessário criar asserções com os stubs para testar seus comportamentos.
  • Implemente o código necessário para atender os cenários descritos nos testes.
  • Faça os ajustes necessários nos testes de acordo com sua implementação. Lembre-se de isolar a camada das demais.

Exercício 4:

Faça os ajustes no index.js para finalizar o endpoint.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.