Episode ini membahas pengelolaan konfigurasi dan environment: opsi seperti testEnvironment dan moduleNameMapper, environment variables untuk test run, custom setup files dan global helpers, serta mengorganisasi konfigurasi lintas project.

Suite yang sehat lahir dari konfigurasi yang terorganisasi. Episode 11 membahas configuration & environment management di Jest: opsi seperti testEnvironment, moduleNameMapper, dan setupFiles, cara mengelola environment variables untuk test run, custom setup files dengan global helpers, serta mengorganisasi konfigurasi lintas project.
Semakin besar codebase, semakin penting konfigurasi yang konsisten dan mudah dimengerti. Episode ini memberi kalian alat untuk menjaga konfigurasi tetap sederhana saat project masih kecil, dan tetap terkendali saat project sudah membesar.
testEnvironment menentukan lingkungan tempat test berjalan. Nilai node untuk project backend, dan jsdom untuk project yang membutuhkan DOM seperti React:
module.exports = {
testEnvironment: "node",
testEnvironmentOptions: {
url: "http://localhost:3000",
},
};testEnvironmentOptions memungkinkan pengaturan tambahan — contohnya URL default untuk jsdom, atau opsi khusus environment lainnya. Memilih environment yang tepat mencegah error aneh seperti document is not defined.
Dua opsi yang sudah disinggung di episode sebelumnya:
moduleNameMapper: memetakan alias path dan module statis seperti CSS.setupFiles: file yang dijalankan sebelum environment test terpasang.Perbedaan penting: setupFiles berjalan sangat awal, sedangkan setupFilesAfterEnv berjalan setelah framework test siap — tempat yang tepat untuk memuat matchers tambahan.
Test sering membutuhkan konfigurasi seperti API URL atau mode aplikasi. Variabel lingkungan bisa disuntikkan dari perintah atau file:
NODE_ENV=test API_URL=http://localhost:8080 npx jestPerintah NODE_ENV=test API_URL=... npx jest menetapkan environment variables untuk durasi eksekusi. Variabel kemudian bisa dibaca di dalam test lewat process.env.
Daripada mengulang process.env di tiap file, atur di setupFiles sekali:
process.env.NODE_ENV = "test";
process.env.API_URL = "http://localhost:8080";
process.env.FEATURE_FLAG_LOGIN = "true";File ini dijalankan sebelum semua test. Cara ini menjaga nilai environment konsisten di seluruh suite — tidak lagi bergantung pada apakah developer menetapkan variabel secara manual.
Setup files juga ideal untuk mendaftarkan helper yang dipakai di mana-mana, misalnya fungsi membuat objek factory atau matchers kustom:
global.buatPengguna = (overrides = {}) => ({
id: 1,
nama: "arif",
...overrides,
});Setelah helper buatPengguna didaftarkan, semua file test bisa memanggil global.buatPengguna() tanpa import berulang. Namun gunakan dengan bijak — terlalu banyak global membuat ketergantungan tersembunyi antar file.
module.exports = {
setupFiles: ["<rootDir>/jest.setup.js"],
setupFilesAfterEnv: ["<rootDir>/jest.setup.after.js"],
};setupFiles untuk env dasar dan setupFilesAfterEnv untuk helper yang butuh environment siap. Memisahkan keduanya membuat alur jelas: env dulu, helper menyusul.
Untuk beberapa project dalam satu organisasi, hindari menyalin konfigurasi berulang-ulang. Buat satu base config yang bisa di-extend:
module.exports = {
testEnvironment: "node",
clearMocks: true,
coverageDirectory: "coverage",
testMatch: ["**/?(*.)+(spec|test).[jt]s?(x)"],
};Setiap project kemudian memakai preset ini dan menimpa hanya yang perlu — misalnya testEnvironment: "jsdom" untuk project frontend. Pendekatan ini mengurangi duplikasi dan memastikan keputusan kebijakan diterapkan seragam. Untuk monorepo, Jest juga mendukung multi-project config yang akan kita bahas di episode 17.
Episode 11 membahas pengelolaan konfigurasi dan environment yang rapi: memilih testEnvironment, menyuntikkan environment variables, membuat setup files dengan global helpers, serta mengorganisasi konfigurasi lintas project memakai base config yang dibagikan.
Inti yang harus dibawa pulang:
testEnvironment memilih antara node dan jsdom sesuai kebutuhan.moduleNameMapper memetakan alias; setupFiles menyiapkan env awal.setupFilesAfterEnv untuk matchers dan helper setelah framework siap.Di episode 12 selanjutnya kita akan menangani testing API & HTTP layers — mocking request dengan fetch, axios, dan nock, menguji API client modules, menjalankan integration tests dengan test servers, serta strategi isolasi untuk menghindari test yang flaky.