0Pricing
Node.js Backend Development Bootcamp · Leçon

Tests unitaires avec Jest

Apprenez à écrire des tests unitaires isolés pour des fonctions et des modules individuels à l’aide du framework de test Jest.

Tests unitaires avec Jest est une leçon Node.js Backend Development Bootcamp gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Node.js Backend Development Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Node.js Backend Development Bootcamp comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

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 describe and test.
  • Making assertions using expect and matchers like .toBe() and .toEqual().
  • Handling asynchronous code with async/await.

Keep practicing and happy testing!

Questions Fréquemment Posées

La leçon « Tests unitaires avec Jest » est-elle gratuite ?

Oui — le texte complet de « Tests unitaires avec Jest » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Node.js Backend Development Bootcamp, passe à CoddyKit PRO. Le cours Node.js Backend Development Bootcamp comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Tests unitaires avec Jest » ?

Apprenez à écrire des tests unitaires isolés pour des fonctions et des modules individuels à l’aide du framework de test Jest. Tu pratiques Node.js Backend Development Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Node.js Backend Development Bootcamp ?

Aucune expérience préalable n'est requise. Node.js Backend Development Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Tests unitaires avec Jest » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Node.js Backend Development Bootcamp ?

Oui. Chaque leçon Node.js Backend Development Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Tests unitaires avec Jest
  2. Tests d’intégration des points de terminaison d’API
  3. Techniques de débogage efficaces
  4. Simulations et doublures de test dans Node.js
← Retour à Node.js Backend Development Bootcamp