Pruebas unitarias con Jest
Aprenda a escribir pruebas unitarias aisladas para funciones y módulos individuales utilizando el framework de pruebas Jest.
Pruebas unitarias con Jest es una lección gratuita de Node.js Backend Development Bootcamp en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Node.js Backend Development Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Node.js Backend Development Bootcamp incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
What is Unit Testing?
Welcome to unit testing! This is a fundamental practice in software development where individual components or functions of your application are tested in isolation.
Think of it like checking each gear in a clock separately to ensure it works perfectly before assembling the whole mechanism. This helps catch bugs early!
Meet Jest: Your Testing Buddy
For Node.js, Jest is one of the most popular and developer-friendly testing frameworks. It's developed by Facebook and offers a complete, integrated solution for JavaScript testing.
- Zero Config: Often works out of the box.
- Fast: Designed for performance.
- Rich API: Powerful assertion library (matchers) included.
- Snapshot Testing: Great for UI components.
Installing Jest
Getting started with Jest is easy. You'll install it as a development dependency in your Node.js project. Open your terminal in your project's root directory and run:
npm install --save-dev jest
After installation, you can add a script to your package.json file to easily run your tests:
"scripts": { "test": "jest" }
Our First Function to Test
Let's write a simple function that we want to test. This function will add two numbers. We'll put it in a file named sum.js.
You can run this file directly to see the function in action, but later we'll use Jest to test it automatically!
function sum(a, b) {
return a + b;
}
// This allows us to use 'sum' in other files
module.exports = sum;
// Optional: Run this part only if the file is executed directly
if (require.main === module) {
console.log("Running sum(2, 3):");
console.log("Result: ", sum(2, 3)); // Expected: 5
}Structuring Your Test File
Jest looks for test files with specific naming conventions, usually .test.js or .spec.js. Let's create sum.test.js in the same directory.
Inside, we use describe() to group related tests and test() (or it()) for individual test cases. This makes your tests organized and readable.
Making Assertions with Matchers
Inside a test() block, we use expect() combined with a "matcher" to assert that a value meets certain conditions. For example, .toBe() checks for exact equality.
Here's how we'd test our sum function:
const sum = require('./sum');
describe('sum function', () => {
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
test('adds 0 + 0 to equal 0', () => {
expect(sum(0, 0)).toBe(0);
});
test('adds negative numbers correctly', () => {
expect(sum(-1, -2)).toBe(-3);
});
});Running Your Tests
Now that you have your sum.js and sum.test.js files, and Jest installed with the script configured, you can run your tests!
Simply type npm test in your terminal. Jest will find your .test.js files, execute them, and report the results. You'll see green if all tests pass!
Handling Async Tests
Many Node.js applications deal with asynchronous operations (like fetching data, database calls). Jest handles these beautifully!
You can use async/await directly in your test functions. Jest will wait for the promise to resolve before completing the test.
function fetchData() {
return new Promise(resolve => {
setTimeout(() => {
resolve("Data from API");
}, 50);
});
}
module.exports = fetchData;
// Optional: Run this part only if the file is executed directly
if (require.main === module) {
console.log("Simulating data fetch...");
fetchData().then(data => console.log("Received: ", data));
}Writing Async Tests
To test our fetchData function, we'll mark our test function as async. Jest also provides special matchers like .resolves and .rejects for promises.
Using await within your test makes asynchronous code look synchronous, improving readability.
const fetchData = require('./fetchData');
describe('fetchData function', () => {
test('should return "Data from API"', async () => {
const data = await fetchData();
expect(data).toBe('Data from API');
});
test('should resolve with specific data', () => {
return expect(fetchData()).resolves.toBe('Data from API');
});
});Jest Matcher Check
Which of the following Jest matchers would you use to check if two objects have the same value (deep comparison), not just if they are the same instance?
Unit Testing with Jest: Recap
Great job! You've learned the basics of unit testing with Jest. We covered:
- What unit testing is and its benefits.
- How to install and set up Jest.
- Structuring tests with
describeandtest. - Making assertions using
expectand matchers like.toBe()and.toEqual(). - Handling asynchronous code with
async/await.
Keep practicing and happy testing!
Preguntas frecuentes
¿La lección «Pruebas unitarias con Jest» es gratis?
Sí — el texto completo de «Pruebas unitarias con Jest» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Node.js Backend Development Bootcamp, actualiza a CoddyKit PRO. El curso de Node.js Backend Development Bootcamp incluye 4 lecciones en total.
¿Qué aprenderé en «Pruebas unitarias con Jest»?
Aprenda a escribir pruebas unitarias aisladas para funciones y módulos individuales utilizando el framework de pruebas Jest. Practicas Node.js Backend Development Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Node.js Backend Development Bootcamp?
No se requiere experiencia previa. Node.js Backend Development Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Pruebas unitarias con Jest»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Node.js Backend Development Bootcamp?
Sí. Cada lección de Node.js Backend Development Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Pruebas unitarias con Jest
- Pruebas de integración de endpoints de API
- Técnicas eficaces de depuración
- Mocks y dobles de prueba en Node.js