Skip to content

[ Node Js / JavaScript ] Testes e funções utilizando uma abordagem de desenvolvimento orientado a testes

Notifications You must be signed in to change notification settings

MalluCortez/Unit-Tests-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto - JavaScript Testes Unitários

Neste projeto implementei várias funções na resolução dos requisitos propostos e/ou testes unitários para garantir que as implementações das funções estão corretas, de acordo com o que está sendo solicitado em cada enunciado.

Objetivos do Projeto

  • Escrever testes unitários utilizando o módulo Jest do NodeJS para verificar o correto funcionamento das funções;
  • Escrever funções de forma que elas atendam a testes já implementados;
  • Escrever testes e funções utilizando uma abordagem de desenvolvimento orientado a testes.

O que foi avaliado?

  • Aderência do código à especificação. Seu programa deve se comportar como especificado na próxima seção.
  • Organização do seu código. Quebre seu código em funções. Prefira funções pequenas, simples e bem definidas a funções grandes e complexas.

Stacks Utilizadas

  • JavaScript e Jest

Requisitos Solicitados

1. Implemente a função average

A função `average` recebe um array de tamanho variável e retorna a média dos valores recebidos. Caso a função receba algum valor não numérico ou um array vazio, o valor `undefined` deve ser retornado.

Todos os resultados devem ser arredondados para valores inteiros. Ex: 4,6 vira 5; 1,3 vira 1. O arquivo average.spec.js contém os testes para average já implementados. Implemente a função no arquivo src/average.js de forma que ela atenda aos testes propostos.

O que será testado:

  • A função average deve retornar a média de seus valores ao receber um array de números;
  • A função average deve retornar undefined ao receber um array que contém valores não numéricos;
  • A função average deve retornar undefined ao receber um array vazio.

2. Implemente os casos de teste para a função numbers

A função `numbers` recebe um array de tamanho variável e retorna `true` se todos os parâmetros forem do tipo 'number' e `false` caso contrário.

Essa função já está implementada no arquivo src/numbers.js. Escreva pelo menos quatro testes para essa função para garantir que a implementação de numbers está correta.

O que será testado:

  • A função numbers deve retornar true quando o array passado por parâmetro contém somente números.

3. Implemente a função vqv

Use template literals para escrever a função `vqv` que recebe o seu nome e a sua idade e retorna o parágrafo descrito abaixo:
`Oi, meu nome é Tunico!
Tenho 30 anos,
trabalho na Trybe e mando muito em programação!
#VQV!`

Caso a função vqv seja chamada sem nenhum parâmetro, o valor undefined deve ser retornado. O arquivo vqv.spec.js contém os testes para vqv já implementados. Implemente a função no arquivo src/vqv.js de forma que ela atenda aos testes propostos.

O que será testado

  • vqv deve ser uma função;
  • A função vqv deve retornar dados do tipo string;
  • A função vqv deve retornar a frase esperada quando passados parâmetros de nome e idade;
  • A função vqv deve retornar undefined quando chamada sem parâmetro.

4. Implemente os casos de teste para a função circle

A função `circle` recebe o raio de um círculo e retorna um objeto contendo as suas informações: Raio, Área e Circunferência. Se não for especificado um raio, a função retorna `undefined`.

Essa função já está implementada no arquivo src/circle.js. Escreva pelo menos seis testes para essa função para garantir que a implementação de circle está correta.

O que será testado

  • O teste da função circle, ao receber um raio, deve retornar um objeto com as informações corretas (Raio, Área e Circunferência).

5. Implemente a função createStudent

A função `createStudent` recebe como parâmetro um **nome**, e retorna um objeto contendo duas chaves:
  1. name, contendo o nome passado como parâmetro;
  2. feedback, contendo uma função que retorna a frase "Eita pessoa boa!" ao ser chamada.

O arquivo createStudent.spec.js contém os testes para createStudent já implementados. Implemente a função no arquivo src/createStudent.js de forma que ela atenda aos testes propostos.

O que será testado

  • A função createStudent deve retornar um objeto que contenha duas chaves: name, contendo o nome passado como parâmetro; e feedback, contendo uma função que retorna a frase "Eita pessoa boa!" ao ser chamada.

6. Implemente os casos de teste para a função productDetails

A função `productDetails` recebe duas strings que representam nomes de produtos, e retorna um array contendo dois objetos com os detalhes dos respectivos produtos:
productDetails('Alcool gel', 'Máscara');

Retorna:

[
  {
    name: 'Alcool gel'
    details: {
      productId: 'Alcool gel123'
    }
  },
  {
    name: 'Máscara'
    details: {
      productId: 'Máscara123'
    }
  }
]

Essa função já está implementada no arquivo src/productDetails.js. Escreva pelo menos cinco testes para essa função no arquivo tests/productDetails.js para garantir que a implementação de productDetails está correta.

O que será testado

  • O teste da função productDetails, ao receber duas strings, deve retornar um array de objetos e se cada objeto contém os dados necessários.

7. Implemente as funções calculator e arrayGenerator

A função `calculator` recebe dois números inteiros como parâmetro e retorna um objeto com as seguintes chaves:
- sum; - mult; - div; - sub.

Para cada chave atribua como valor a operação correspondente à sua chave:

  • sum: retorna o resultado da soma dos dois números;
  • mult: retorna o resultado da multiplicação dos dois números;
  • div: retorna o resultado da divisão dos dois números;
  • sub: retorna o resultado da subtração dos dois números.

Os resultados das divisões devem sempre ser arredondados para baixo.

Parâmetros:

  • Dois números inteiros.

Comportamento:

calculator(1, 2); // { sum: 3, mult: 2, div: 0, sub: -1 }

Já a função arrayGenerator converte objetos em arrays, de chaves, valores ou ambos. Ela deve receber dois parâmetros:

  • o primeiro parâmetro deve ser uma string que indica o tipo de conversão;
  • o segundo parâmetro deve ser um objeto semelhante ao que é retornado pela função calculator que você acabou de desenvolver.

Parâmetros:

  • Uma string que indica o tipo de conversão;
  • Um objeto no formato { sum: 3, mult: 2, div: 0, sub: -1 };

Comportamento:

arrayGenerator('keys', { sum: 3, mult: 2, div: 1, sub: 0 }) // [ 'sum', 'mult', 'div', 'sub' ]
arrayGenerator('values', { sum: 3, mult: 2, div: 1, sub: 0 }) // [ 3, 2, 1, 0 ]
arrayGenerator('entries', { sum: 3, mult: 2, div: 1, sub: 0 }) // [ [ 'sum', 3 ], [ 'mult', 2 ], [ 'div', 1 ], [ 'sub', 0 ] ]

O arquivo objPlayground.spec.js contém os testes para calculator e arrayGenerator já implementados. Implemente as funções no arquivo src/objPlayground.js de forma que ela atenda aos testes propostos.

O que será testado

  • A função calculator deve retornar os valores esperados;
  • A função arrayGenerator deve retornar os valores esperados.

8. Implemente a função myCounter

A função `myCounter` possui dois loops aninhados que inserem valores dentro de um array. Como podemos perceber, eles vão adicionando valores ao array até sua condição de parada.

Corrija a função myCounter, sem eliminar nenhum dos loops de repetição, para que a função retorne o array correto. O arquivo myCounter.spec.js contém os testes para myCounter já implementados. Implemente a função no arquivo src/myCounter.js de forma que ela atenda aos testes propostos.

O que será testado

  • A função myCounter deve retornar os dados esperados de acordo com o que está implementado no teste.
---

About

[ Node Js / JavaScript ] Testes e funções utilizando uma abordagem de desenvolvimento orientado a testes

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published