0Pricing
React Academy · Leçon

DevTools de Zustand et tests des stores

Connectez-vous à Redux DevTools via le middleware devtools et testez directement les actions du store.

DevTools de Zustand et tests des stores est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 4 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 React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Bienvenue

Dans cette leçon, vous connecterez un store Zustand à Redux DevTools pour déboguer en remontant dans le temps, puis vous écrirez directement des tests unitaires pour les actions du store.

Le middleware des outils de développement

Entourez votre store du middleware des outils de développement pour le connecter à l'extension de navigateur Redux DevTools. Vous pourrez ensuite inspecter chaque action et chaque changement d'état dans la chronologie de DevTools.
import { create } from 'zustand';
import { devtools } from 'zustand/middleware';

const useStore = create(
  devtools(
    (set) => ({
      count: 0,
      increment: () => set(s => ({ count: s.count + 1 }), false, 'increment'),
    }),
    { name: 'CounterStore' }
  )
);

Actions nommées dans DevTools

Transmettez un nom d'action comme troisième argument à la fonction de mise à jour lorsque vous utilisez les outils de développement. Cette étiquette apparaît dans la chronologie de DevTools, ce qui facilite le suivi des changements.
set(s => ({ count: s.count + 1 }), false, 'counter/increment');
// Appears as 'counter/increment' in Redux DevTools

Combinaison de la persistance et des outils de développement

Enchaînez plusieurs intergiciels. Intégrez le middleware des outils de développement dans celui de persistance pour voir tous les changements d'état, y compris ceux provenant de la réhydratation du stockage.
const useStore = create(
  devtools(
    persist(
      (set) => ({ /* ... */ }),
      { name: 'my-store' }
    ),
    { name: 'MyStore' }
  )
);

Test des stores Zustand

Les stores Zustand sont de simples objets JavaScript. Vous pouvez les tester directement sans afficher de composants React. Importez le store, puis appelez getState() et setState() dans vos tests.
import { useCounterStore } from './store';

beforeEach(() => useCounterStore.setState({ count: 0 }));

test('increment increases count', () => {
  useCounterStore.getState().increment();
  expect(useCounterStore.getState().count).toBe(1);
});

Réinitialisation de l'état entre les tests

Appelez setState avec les valeurs initiales dans beforeEach pour réinitialiser le store entre les tests et empêcher toute fuite d'état entre les cas de test.
const initialState = { count: 0, user: null };

beforeEach(() => {
  useMyStore.setState(initialState);
});

Simulation du store dans les tests de composants

Pour les tests de composants, utilisez mock sur le crochet du store afin qu'il renvoie des valeurs contrôlées. Vous pouvez ainsi vérifier l'affichage du composant pour différents états du store sans utiliser la logique réelle du store.
vi.mock('./useCounterStore', () => ({
  useCounterStore: vi.fn(() => ({ count: 5, increment: vi.fn() })),
}));

Test des actions asynchrones

Simulez l'appel réseau dans votre test et appelez l'action asynchrone via getState(). Attendez l'opération asynchrone avec await, puis (then) vérifiez l'état mis à jour.
global.fetch = vi.fn().mockResolvedValue({
  json: () => Promise.resolve({ id: 1, name: 'Alice' }),
});

await useUserStore.getState().fetchUser(1);
expect(useUserStore.getState().user.name).toBe('Alice');

Protection des outils de développement en production

Désactivez conditionnellement le middleware des outils de développement en production. Cela empêche d'exposer la structure de votre store aux utilisateurs.
const isDev = process.env.NODE_ENV === 'development';

const useStore = create(
  isDev ? devtools(storeCreator, { name: 'App' }) : storeCreator
);

Middleware de journalisation

Vous pouvez écrire un middleware personnalisé de journalisation pour consigner chaque changement d'état dans la console, ce qui est utile lorsque vous ne pouvez pas installer d'extensions de navigateur.
const log = (fn) => (set, get, api) => fn(
  (args, replace, name) => {
    console.log('action', name, args);
    set(args, replace, name);
  }, get, api
);

Vérification rapide

Comment réinitialiser un store Zustand à son état initial entre les tests ?

Récapitulatif

Ajoutez le middleware des outils de développement et nommez vos actions pour obtenir des chronologies DevTools lisibles. Testez directement les stores avec getState()/setState() sans afficher de composants. Réinitialisez l'état dans beforeEach afin d'isoler les tests.

Cours terminé

Félicitations ! Vous avez terminé **Gestion de l'état avec Zustand**. Vous pouvez créer des stores, utiliser des sélecteurs, conserver l'état, déboguer avec DevTools et écrire des tests unitaires pour la logique de vos stores.

Questions Fréquemment Posées

La leçon « DevTools de Zustand et tests des stores » est-elle gratuite ?

Oui — le texte complet de « DevTools de Zustand et tests des stores » 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 React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « DevTools de Zustand et tests des stores » ?

Connectez-vous à Redux DevTools via le middleware devtools et testez directement les actions du store. Tu pratiques React Academy 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 React Academy ?

Aucune expérience préalable n'est requise. React Academy 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 4 sur 4.

Combien de temps prend la leçon « DevTools de Zustand et tests des stores » ?

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 React Academy ?

Oui. Chaque leçon React Academy 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. Créer votre premier store Zustand
  2. Sélecteurs et prévention des nouveaux rendus inutiles
  3. Persister l’état avec le middleware Persist
  4. DevTools de Zustand et tests des stores
← Retour à React Academy