Projetos
Testes

Projeto ToDoList com Jest

Neste artigo, vamos criar e testar uma ToDoList simples utilizando o framework Jest. O foco será construir funções robustas com feedback claro e realizar testes automatizados para garantir que tudo funcione como esperado.

16 de mai. de 2025

4 min de leitura

Projeto ToDoList com Jest

📁 Estrutura de Arquivos

project-root/
├── src/
│   └── toDoList.js
├── tests/
│   └── toDoList.test.js
└── package.json

Código da ToDoList

src/toDoList.js

const list = [];

// Adiciona um item na lista, evitando duplicatas
function toDoList(item) {
  if (!item || typeof item !== 'string') return "Item inválido";
  if (!list.includes(item)) {
    list.push(item);
    return "Item adicionado";
  }
  return "Este item já foi adicionado";
}

// Remove um item da lista
function removeItem(item) {
  const index = list.indexOf(item);
  if (index > -1) {
    list.splice(index, 1);
    return "Item removido";
  }
  return "Item não encontrado";
}

// Retorna todos os itens da lista
function getAllItems() {
  return [...list];
}

// Reseta a lista para fins de teste
function resetList() {
  list.length = 0;
}

module.exports = { toDoList, removeItem, getAllItems, resetList };

Casos de Teste

tests/toDoList.test.js

const functions = require("../src/toDoList");

beforeEach(() => {
  functions.resetList(); // limpa a lista antes de cada teste
});

test("add new item", () => {
  expect(functions.toDoList("Comprar pão")).toBe("Item adicionado");
});

test("do not add duplicate item", () => {
  functions.toDoList("Estudar Jest");
  expect(functions.toDoList("Estudar Jest")).toBe("Este item já foi adicionado");
});

test("reject invalid input", () => {
  expect(functions.toDoList("")).toBe("Item inválido");
  expect(functions.toDoList(null)).toBe("Item inválido");
  expect(functions.toDoList(123)).toBe("Item inválido");
});

test("remove existing item", () => {
  functions.toDoList("Ir ao mercado");
  expect(functions.removeItem("Ir ao mercado")).toBe("Item removido");
});

test("fail to remove non-existent item", () => {
  expect(functions.removeItem("Lavar o carro")).toBe("Item não encontrado");
});

test("get all items", () => {
  functions.toDoList("Ler livro");
  functions.toDoList("Fazer exercícios");
  expect(functions.getAllItems()).toEqual(["Ler livro", "Fazer exercícios"]);
});

Saída esperada:

PASS  tests/toDoList.test.js
add new item (3 ms)
do not add duplicate item (1 ms)
  √ reject invalid input (1 ms)
  √ remove existing item
  √ fail to remove non-existent item (1 ms)
  √ get all items (1 ms)
Test Suites: 1 passed, 1 total
Tests:       6 passed, 6 total
Snapshots:   0 total
Time:        1.168 s

Conclusão

Criamos uma aplicação simples de lista de tarefas com feedback direto e testável. Com Jest, conseguimos validar cada funcionalidade individualmente e garantir a confiabilidade do código.

Este tipo de exemplo é ideal para iniciantes que querem entender na prática como testar suas funções JavaScript.


Para rodar os testes

No terminal, execute:

npm install
npm test

Tags

Projetos
Testes

Artigos Relacionados

Imagem sobre o React
Projetos
Testes

Validador de CPF com Jest: Mockando uma API e Testando na Prática

Testar código com Jest vai além de verificar se uma função retorna o valor esperado. Podemos simular APIs, validar dados reais e garantir que nosso código funciona mesmo com entradas externas. Neste post, vamos criar um exemplo prático: **uma API falsa que retorna CPFs** e uma função que valida se esse CPF é verdadeiro. Tudo isso com testes automatizados.

16 de mai. de 20257 min de leitura
Imagem sobre o React
Projetos
Testes

Criando uma API Mockada de Usuários com Testes em Jest

Neste post, vamos criar uma API mockada de usuários usando apenas JavaScript puro, sem frameworks como Express, e testar seus endpoints com Jest. Essa prática ajuda a entender como simular comportamentos de APIs e validar as respostas esperadas.

16 de mai. de 20257 min de leitura

Blog DevTest

Conteúdo técnico Sobre React, Jest e testes modernos para desenvolvedores de todos os níveis

© 2025

DevTrail. Todos os direitos reservados.