0Pricing
React Academy · Lektion

Zustand DevTools und Stores testen

Verbinden Sie Zustand über die devtools-Middleware mit Redux DevTools und testen Sie Store-Actions direkt mit Unit-Tests.

Zustand DevTools und Stores testen ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Willkommen

In dieser Lektion verbinden Sie einen Zustand-Store für das Debugging mit Zeitreisen mit Redux DevTools und schreiben direkt Unit-Tests für Store-Actions.

Die devtools-Middleware

Umschließen Sie Ihren Store mit der devtools-Middleware, um ihn mit der Redux-DevTools-Browsererweiterung zu verbinden. Anschließend können Sie jede Action und Zustandsänderung in der DevTools-Zeitleiste untersuchen.
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' }
  )
);

Benannte Actions in DevTools

Übergeben Sie set() bei Verwendung von devtools als drittes Argument einen Action-Namen. Diese Bezeichnung erscheint in der DevTools-Zeitleiste und erleichtert die Nachverfolgung von Änderungen.
set(s => ({ count: s.count + 1 }), false, 'counter/increment');
// Appears as 'counter/increment' in Redux DevTools

persist und devtools kombinieren

Verketten Sie mehrere Middlewares. Umschließen Sie persist mit devtools, um alle Zustandsänderungen einschließlich der durch die Wiederherstellung aus dem Speicher verursachten Änderungen zu sehen.
const useStore = create(
  devtools(
    persist(
      (set) => ({ /* ... */ }),
      { name: 'my-store' }
    ),
    { name: 'MyStore' }
  )
);

Zustand-Stores testen

Zustand-Stores bestehen aus einfachem JavaScript. Sie können sie direkt testen, ohne React-Komponenten zu rendern. Importieren Sie den Store und rufen Sie in Ihren Tests getState() und setState() auf.
import { useCounterStore } from './store';

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

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

Zustand zwischen Tests zurücksetzen

Rufen Sie in einem beforeEach setState mit den Ausgangswerten auf, um den Store zwischen Tests zurückzusetzen und zu verhindern, dass Zustand zwischen Testfällen erhalten bleibt.
const initialState = { count: 0, user: null };

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

Den Store in Komponententests mocken

Mocken Sie für Komponententests den Store-Hook so, dass er kontrollierte Werte zurückgibt. So können Sie testen, wie die Komponente bei unterschiedlichen Store-Zuständen gerendert wird, ohne die tatsächliche Store-Logik zu verwenden.
vi.mock('./useCounterStore', () => ({
  useCounterStore: vi.fn(() => ({ count: 5, increment: vi.fn() })),
}));

Asynchrone Actions testen

Mocken Sie fetch in Ihrem Test und rufen Sie die asynchrone Action über getState() auf. Warten Sie mit await auf den Abschluss der asynchronen Operation und prüfen Sie anschließend den aktualisierten Zustand.
global.fetch = vi.fn().mockResolvedValue({
  json: () => Promise.resolve({ id: 1, name: 'Alice' }),
});

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

DevTools-Schutz für den Produktivbetrieb

Deaktivieren Sie devtools im Produktivbetrieb, indem Sie die Middleware bedingt anwenden. Dadurch verhindern Sie, dass Ihre Store-Struktur für Benutzer sichtbar wird.
const isDev = process.env.NODE_ENV === 'development';

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

Protokollierungs-Middleware

Sie können eine benutzerdefinierte Protokollierungs-Middleware schreiben, die jede Zustandsänderung in der Konsole protokolliert – nützlich, wenn Sie keine Browsererweiterungen installieren können.
const log = (fn) => (set, get, api) => fn(
  (args, replace, name) => {
    console.log('action', name, args);
    set(args, replace, name);
  }, get, api
);

Kurzer Check

Wie setzen Sie einen Zustand-Store zwischen Tests auf seinen Ausgangszustand zurück?

Zusammenfassung

Fügen Sie die devtools-Middleware hinzu und benennen Sie Ihre Actions, damit die DevTools-Zeitleisten verständlich bleiben. Testen Sie Stores direkt mit getState()/setState(), ohne Komponenten zu rendern. Setzen Sie den Zustand in beforeEach zurück, um Tests voneinander zu isolieren.

Kurs abgeschlossen

Herzlichen Glückwunsch! Sie haben **Zustandsverwaltung mit Zustand** abgeschlossen. Sie können Stores erstellen, Selektoren verwenden, den Zustand speichern, mit DevTools debuggen und Unit-Tests für Ihre Store-Logik schreiben.

Häufig gestellte Fragen

Ist die Lektion „Zustand DevTools und Stores testen“ kostenlos?

Ja — der vollständige Text von „Zustand DevTools und Stores testen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Zustand DevTools und Stores testen“?

Verbinden Sie Zustand über die devtools-Middleware mit Redux DevTools und testen Sie Store-Actions direkt mit Unit-Tests. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Zustand DevTools und Stores testen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ihren ersten Zustand-Store erstellen
  2. Selectoren und das Vermeiden unnötiger erneuter Renderings
  3. State mit der Persist-Middleware speichern
  4. Zustand DevTools und Stores testen
← Zurück zu React Academy