Este repositório foi criado para demonstrar a aplicação de TDD (Test-Driven Development) utilizando o framework de testes Mocha e a biblioteca Chai. O objetivo é validar a funcionalidade de uma classe Pessoa, determinando se uma pessoa é maior de idade ou não, com base nos requisitos fornecidos.
- Escrever um teste que falha antes de implementar o código funcional.
- Escrever apenas o código necessário para fazer o teste passar.
O ciclo de desenvolvimento no TDD segue a ordem:
- Red: Escreva um teste que falha.
- Green: Implemente o código mínimo necessário para que o teste passe.
- Refactor: Refatore o código mantendo os testes funcionando.
- Não escreva código de produção sem antes escrever um teste que falhe.
- Não escreva mais de um teste de unidade que falhe por vez.
- Não escreva mais código de produção do que o necessário para fazer o teste atual passar.
- RF001: Pessoas com 17 anos ou mais podem consumir bebida alcoólica.
- RF002: Pessoas com menos de 17 anos não podem consumir bebida alcoólica.
qa.tdd-mocha.javascript/
├── src/
│ └── Pessoa.js # Implementação da classe Pessoa
├── test/
│ └── Pessoa.test.js # Testes unitários da classe Pessoa
├── .github/
│ └── workflows/
│ └── ci.yml # Configuração do pipeline do GitHub Actions
├── package.json # Configurações do projeto e dependências
├── README.md # Documentação do projeto
- Node.js instalado (versão 18 ou superior recomendada).
- Git instalado para clonar o repositório.
-
Clone o repositório:
git clone https://github.com/DiegoJOFernandes/qa.tdd-mocha.javascript.git cd qa.tdd-mocha.javascript -
Instale as dependências:
npm install
Execute os testes unitários com o comando:
npm testO projeto inclui um pipeline configurado com o GitHub Actions para executar os testes automaticamente em cada push para o repositório.
Arquivo de configuração: .github/workflows/ci.yml.
É o TDD foi escolhido para este desafio porque:
- Ele garante que o código seja escrito para atender aos requisitos antes da implementação.
- Facilita a identificação de possíveis erros no código durante o desenvolvimento.
- Promove um design de código mais limpo e orientado pelos requisitos.