0Pricing
React Academy · Ders

Zustand DevTools ve Store'ları Test Etme

devtools middleware aracılığıyla Redux DevTools'a bağlanın ve store eylemlerini doğrudan birim testine tabi tutun.

Zustand DevTools ve Store'ları Test Etme, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.

Hoş Geldiniz

Bu derste, zaman içinde geriye giderek hata ayıklamak için bir Zustand store'unu Redux DevTools'a bağlayacak ve store eylemleri için doğrudan birim testleri yazacaksınız.

DevTools Ara Yazılımı

Store'unuzu, Redux DevTools tarayıcı uzantısına bağlamak için DevTools ara yazılımıyla sarın. Ardından DevTools zaman çizelgesinde her eylemi ve durum değişikliğini inceleyebilirsiniz.
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' }
  )
);

DevTools'ta Adlandırılmış Eylemler

set() kullanırken üçüncü bağımsız değişken olarak bir eylem adı aktarın (devtools kullanıldığında). Bu etiket DevTools zaman çizelgesinde görünür ve neyin değiştiğini izlemeyi kolaylaştırır.
set(s => ({ count: s.count + 1 }), false, 'counter/increment');
// Appears as 'counter/increment' in Redux DevTools

persist ve devtools'u Birleştirme

Birden çok ara yazılımı zincirleyin. Depolamadan yeniden hidrasyon sırasında gerçekleşenler de dahil olmak üzere tüm durum değişikliklerini görmek için devtools'u persist'in içine sarın.
const useStore = create(
  devtools(
    persist(
      (set) => ({ /* ... */ }),
      { name: 'my-store' }
    ),
    { name: 'MyStore' }
  )
);

Zustand Store'larını Test Etme

Zustand store'ları düz JavaScript'tir. Herhangi bir React bileşeni oluşturmadan bunları doğrudan test edebilirsiniz. Store'u içe aktarın ve testlerinizde getState() ile setState() çağırın.
import { useCounterStore } from './store';

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

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

Testler Arasında Durumu Sıfırlama

Testler arasında store'u sıfırlamak için beforeEach içinde başlangıç değerleriyle setState çağırın; böylece test durumları arasında durum sızıntısı oluşmasını önleyin.
const initialState = { count: 0, user: null };

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

Bileşen Testlerinde Store'u Taklit Etme

Bileşen testleri için store kancasını denetimli değerler döndürecek şekilde mock'layın. Bu, gerçek store mantığı olmadan bileşenin farklı store durumlarında nasıl oluşturulduğunu test etmenizi sağlar.
vi.mock('./useCounterStore', () => ({
  useCounterStore: vi.fn(() => ({ count: 5, increment: vi.fn() })),
}));

Asenkron Eylemleri Test Etme

Testinizde fetch işlevini mock'layın ve getState() üzerinden asenkron eylemi çağırın. await ile asenkron işlemi bekleyin ve then güncellenen durum üzerinde doğrulama yapın.
global.fetch = vi.fn().mockResolvedValue({
  json: () => Promise.resolve({ id: 1, name: 'Alice' }),
});

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

Üretim Ortamı DevTools Koruması

Ara yazılımı koşullu olarak uygulayarak üretim ortamında devtools'u devre dışı bırakın. Bu, store yapınızın kullanıcılara açığa çıkmasını önler.
const isDev = process.env.NODE_ENV === 'development';

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

Günlükleme Ara Yazılımı

Her durum değişikliğini konsola log etmek için özel bir günlükleme ara yazılımı yazabilirsiniz — tarayıcı uzantıları kuramadığınızda kullanışlıdır.
const log = (fn) => (set, get, api) => fn(
  (args, replace, name) => {
    console.log('action', name, args);
    set(args, replace, name);
  }, get, api
);

Hızlı Kontrol

Testler arasında bir Zustand store'unu başlangıç durumuna nasıl sıfırlarsınız?

Özet

Okunabilir DevTools zaman çizelgeleri için devtools ara yazılımını ekleyin ve eylemlerinize ad verin. Bileşenleri oluşturmadan store'ları getState()/setState() ile doğrudan test edin. Testleri birbirinden yalıtmak için durumu beforeEach içinde sıfırlayın.

Kurs Tamamlandı

Tebrikler! **Zustand ile Durum Yönetimi** kursunu tamamladınız. Store'lar oluşturabilir, seçiciler kullanabilir, durumu kalıcı hâle getirebilir, DevTools ile hata ayıklayabilir ve store mantığınız için birim testleri yazabilirsiniz.

Sıkça Sorulan Sorular

“Zustand DevTools ve Store'ları Test Etme” dersi ücretsiz mi?

Evet — “Zustand DevTools ve Store'ları Test Etme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.

“Zustand DevTools ve Store'ları Test Etme” dersinde ne öğreneceğim?

devtools middleware aracılığıyla Redux DevTools'a bağlanın ve store eylemlerini doğrudan birim testine tabi tutun. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

React Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Zustand DevTools ve Store'ları Test Etme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu React Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İlk Zustand Store'unuzu Oluşturma
  2. Seçiciler ve Gereksiz Yeniden Oluşturmaları Önleme
  3. Persist Middleware ile Durumu Kalıcı Hâle Getirme
  4. Zustand DevTools ve Store'ları Test Etme
← React Academy Sayfasına Dön