Penggunaan setup.ts di Vitest

I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.
Search for a command to run...

I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.
No comments yet. Be the first to comment.
Ringkasan: Jika OpenClaw adalah AI Operating System yang menghubungkan berbagai layanan dan agent, maka Hermes adalah AI Worker yang fokus mengerjakan pekerjaan, belajar dari pengalaman, dan semakin p

Ketika membangun aplikasi modern seperti Next.js, Cloudflare Workers, platform AI, microservices, atau real-time dashboard, ada banyak istilah jaringan yang sering muncul: TCP, UDP, HTTP/2, QUIC, WebS

Setiap tahun, ribuan mahasiswa jurusan Teknologi Informasi, Sistem Informasi, dan Teknik Informatika diwisuda. Namun, tidak sedikit di antara mereka yang kemudian menghadapi kenyataan yang cukup berat

Jika Anda menggunakan Next.js, kemungkinan besar Anda pernah mendengar anggapan bahwa: "Next.js = Vercel" Padahal kenyataannya tidak harus demikian. Di sinilah OpenNext hadir. OpenNext adalah proyek

Saat pertama kali mencoba OpenCode Go, saya hampir langsung berlangganan tanpa membaca detail program yang mereka sediakan. Untungnya saya menemukan bahwa OpenCode memiliki program referral yang membe

Dalam Vitest, file setup.ts digunakan untuk menjalankan kode setup atau inisialisasi sebelum semua tes dijalankan. File ini sangat berguna untuk mengonfigurasi hal-hal yang bersifat global, seperti:
Pengaturan Library Pihak Ketiga:
Contohnya: Menginisialisasi msw untuk mocking API.
Menyediakan global variables atau fungsi yang sering digunakan.
Persiapan Lingkungan Tes:
Mocking Global:
window, fetch, atau console.Membersihkan State Antar Tes:
setup.tsDeklarasi di Konfigurasi Vitest Agar file setup.ts dikenali oleh Vitest, Anda harus mereferensikannya di file konfigurasi Vitest (vitest.config.ts atau vite.config.ts):
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
setupFiles: './src/tests/setup.ts', // Lokasi file setup.ts
},
});
Kode dalam setup.ts File ini biasanya hanya berisi kode inisialisasi global. Contohnya:
// setup.ts
// Mocking API menggunakan MSW (Mock Service Worker)
import { setupServer } from 'msw/node';
import { rest } from 'msw';
const server = setupServer(
rest.get('/api/user', (req, res, ctx) => {
return res(ctx.json({ username: 'test-user' }));
})
);
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
// Menambahkan global variabel jika diperlukan
globalThis.__TEST_ENV__ = 'vitest';
Akses di Pengujian Setelah setup.ts diatur, semua pengujian akan memiliki lingkungan yang telah disiapkan tanpa perlu mengulang kode setup di setiap file.
setup.ts?Gunakan setup.ts jika:
Anda memiliki konfigurasi global yang harus diterapkan ke semua pengujian.
Anda ingin menghindari pengulangan kode setup di setiap file pengujian.
Anda menggunakan library seperti:
MSW untuk API mocking.
@testing-library/react untuk pengujian React.
jsdom untuk simulasi DOM.
setup.tsJika Anda tidak ingin menggunakan file terpisah (setup.ts), Anda bisa menempatkan setup langsung di dalam file pengujian. Namun, ini tidak dianjurkan untuk skenario yang membutuhkan setup global karena dapat menyebabkan:
Pengulangan kode di beberapa file.
Kesalahan konfigurasi jika pengujian kompleks.
vitest.config.ts):import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
setupFiles: './tests/setup.ts', // Lokasi file setup
globals: true, // Mengaktifkan akses global
environment: 'node', // Atur environment untuk pengujian
},
});
setup.ts):// Setup global variabel
globalThis.BASE_URL = 'http://localhost:3000';
// Mock console untuk menghindari spam di log
global.console = {
...console,
log: jest.fn(),
warn: jest.fn(),
error: jest.fn(),
};
import { describe, it, expect } from 'vitest';
describe('Global Setup', () => {
it('should access global BASE_URL', () => {
expect(globalThis.BASE_URL).toBe('http://localhost:3000');
});
});
setup.tsEfisiensi: Kode setup global ditulis sekali, digunakan di seluruh pengujian.
Keterbacaan: File pengujian lebih bersih tanpa kode setup berulang.
Fleksibilitas: Memudahkan integrasi dengan library eksternal atau konfigurasi kompleks.
Jika Anda masih memiliki pertanyaan atau ingin contoh penggunaan setup.ts yang lebih spesifik, beri tahu saya! 😊