0Pricing
React Academy · Pelajaran

DevTools Zustand & Pengujian Store

Hubungkan ke Redux DevTools melalui middleware devtools dan uji unit aksi store secara langsung.

DevTools Zustand & Pengujian Store adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Selamat Datang

Dalam pelajaran ini, Anda akan menghubungkan penyimpanan Zustand ke Redux DevTools untuk penelusuran kesalahan perjalanan waktu dan menulis pengujian unit untuk tindakan penyimpanan secara langsung.

Perantara devtools

Bungkus penyimpanan Anda dengan perantara devtools untuk menghubungkannya ke ekstensi peramban Redux DevTools. Setelah itu, Anda dapat memeriksa setiap tindakan dan perubahan status di linimasa 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' }
  )
);

Tindakan Bernama di DevTools

Teruskan nama tindakan sebagai argumen ketiga ke set() (saat menggunakan devtools). Label ini muncul di linimasa DevTools sehingga memudahkan pelacakan perubahan yang terjadi.
set(s => ({ count: s.count + 1 }), false, 'counter/increment');
// Appears as 'counter/increment' in Redux DevTools

Menggabungkan persist dan devtools

Rangkai beberapa perantara. Bungkus devtools di dalam persist agar Anda dapat melihat semua perubahan status, termasuk perubahan akibat pemulihan dari penyimpanan.
const useStore = create(
  devtools(
    persist(
      (set) => ({ /* ... */ }),
      { name: 'my-store' }
    ),
    { name: 'MyStore' }
  )
);

Menguji Penyimpanan Zustand

Penyimpanan Zustand adalah JavaScript biasa. Anda dapat mengujinya secara langsung tanpa merender komponen React apa pun. Impor penyimpanan tersebut, lalu panggil getState() dan setState() dalam pengujian Anda.
import { useCounterStore } from './store';

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

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

Mengatur Ulang Status di Antara Pengujian

Panggil setState dengan nilai awal dalam beforeEach untuk mengatur ulang penyimpanan di antara pengujian dan mencegah kebocoran status antar kasus pengujian.
const initialState = { count: 0, user: null };

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

Membuat Tiruan Penyimpanan dalam Pengujian Komponen

Untuk pengujian komponen, gunakan mock pada hook penyimpanan agar mengembalikan nilai yang telah ditentukan. Dengan begitu, Anda dapat menguji cara komponen ditampilkan dalam berbagai keadaan penyimpanan tanpa menggunakan logika penyimpanan yang sebenarnya.
vi.mock('./useCounterStore', () => ({
  useCounterStore: vi.fn(() => ({ count: 5, increment: vi.fn() })),
}));

Menguji Tindakan Asinkron

Buat tiruan fetch dalam pengujian Anda, lalu panggil tindakan asinkron melalui getState(). Tunggu operasi asinkron dengan await, kemudian pastikan status yang diperbarui sudah benar.
global.fetch = vi.fn().mockResolvedValue({
  json: () => Promise.resolve({ id: 1, name: 'Alice' }),
});

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

Perlindungan DevTools Produksi

Nonaktifkan devtools dalam produksi dengan menerapkan perantara secara kondisional. Ini mencegah struktur penyimpanan Anda terbuka kepada pengguna.
const isDev = process.env.NODE_ENV === 'development';

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

Perantara Pencatatan

Anda dapat menulis perantara pencatatan khusus untuk mencatat setiap perubahan status ke konsol — berguna ketika Anda tidak dapat memasang ekstensi peramban.
const log = (fn) => (set, get, api) => fn(
  (args, replace, name) => {
    console.log('action', name, args);
    set(args, replace, name);
  }, get, api
);

Pemeriksaan Singkat

Bagaimana cara mengatur ulang penyimpanan Zustand ke status awalnya di antara pengujian?

Ringkasan

Tambahkan perantara devtools dan beri nama pada tindakan Anda agar linimasa DevTools mudah dibaca. Uji penyimpanan secara langsung dengan getState()/setState() tanpa merender komponen. Atur ulang status dalam beforeEach untuk mengisolasi pengujian.

Kursus Selesai

Selamat! Anda telah menyelesaikan **Pengelolaan Status dengan Zustand**. Kini Anda dapat membuat penyimpanan, menggunakan pemilih, menyimpan status secara permanen, menelusuri kesalahan dengan DevTools, dan menulis pengujian unit untuk logika penyimpanan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “DevTools Zustand & Pengujian Store” gratis?

Ya — teks lengkap “DevTools Zustand & Pengujian Store” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “DevTools Zustand & Pengujian Store”?

Hubungkan ke Redux DevTools melalui middleware devtools dan uji unit aksi store secara langsung. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “DevTools Zustand & Pengujian Store” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuat Store Zustand Pertama Anda
  2. Pemilih & Pencegahan Render Ulang yang Tidak Perlu
  3. Mempertahankan Status dengan Middleware Persist
  4. DevTools Zustand & Pengujian Store
← Kembali ke React Academy