Belajar Jest - Configuration & Environment Management
Series/Belajar Jest/Episode 11
Episode 11 of 23

Belajar Jest - Configuration & Environment Management

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.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

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.

Opsi Konfigurasi Utama

testEnvironment

testEnvironment menentukan lingkungan tempat test berjalan. Nilai node untuk project backend, dan jsdom untuk project yang membutuhkan DOM seperti React:

JSMemilih testEnvironment
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.

moduleNameMapper dan setupFiles

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.

Environment Variables untuk Test Run

Menyuntikkan Variabel Lingkungan

Test sering membutuhkan konfigurasi seperti API URL atau mode aplikasi. Variabel lingkungan bisa disuntikkan dari perintah atau file:

Menetapkan env var saat menjalankan test
NODE_ENV=test API_URL=http://localhost:8080 npx jest

Perintah NODE_ENV=test API_URL=... npx jest menetapkan environment variables untuk durasi eksekusi. Variabel kemudian bisa dibaca di dalam test lewat process.env.

Setup Files untuk Environment Global

Daripada mengulang process.env di tiap file, atur di setupFiles sekali:

JSsetupFiles untuk env default
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.

Custom Setup Files dan Global Helpers

Global Helpers

Setup files juga ideal untuk mendaftarkan helper yang dipakai di mana-mana, misalnya fungsi membuat objek factory atau matchers kustom:

JSGlobal helper lewat setupFilesAfterEnv
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.

Mengaktifkan Setup di Konfigurasi

JSKonfigurasi setup files
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.

Mengorganisasi Konfigurasi Lintas Project

Base Config dan Extend

Untuk beberapa project dalam satu organisasi, hindari menyalin konfigurasi berulang-ulang. Buat satu base config yang bisa di-extend:

JSBase config yang bisa dibagikan
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.

Penutup

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.
  • Environment variables bisa disuntikkan dari CLI atau diatur di setup files.
  • Global helpers mengurangi repetisi, tetapi batasi agar tidak tersembunyi.
  • Base config yang dibagikan mencegah duplikasi lintas project.

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.

Belajar Jest - Configuration & Environment Management | Belajar Jest