Testing di TypeScript: Panduan Menggunakan Jest dan Vitest dengan Tipe yang Kuat

By | 23 October 2025

Testing di TypeScript adalah langkah penting untuk memastikan aplikasi berjalan sesuai harapan dan bebas dari bug sebelum diproduksi. Dengan memanfaatkan sistem tipe statis milik TypeScript, pengujian dapat menjadi lebih aman, konsisten, dan mudah dikelola. TypeScript tidak hanya membantu saat menulis kode utama, tetapi juga memperkuat keandalan dalam proses testing dengan mencegah kesalahan tipe sejak awal.

Dalam proyek besar, testing yang baik dapat menghemat waktu dan biaya pengembangan. Framework seperti Jest dan Vitest sangat populer karena mudah digunakan, cepat, dan memiliki integrasi yang baik dengan TypeScript. Kedua framework ini memungkinkan developer menulis test yang jelas, kuat, serta memberikan umpan balik instan ketika ada perubahan pada kode yang berpotensi menyebabkan error.

Mengapa Testing Penting dalam TypeScript

Testing berfungsi untuk memastikan bahwa setiap fungsi, class, dan modul bekerja sesuai ekspektasi. Dalam konteks TypeScript, sistem tipe menambah lapisan keamanan tambahan dengan mendeteksi kesalahan tipe data yang sering luput dalam JavaScript.

Dengan menulis test di TypeScript, developer mendapatkan dua manfaat sekaligus: validasi logika program melalui test dan validasi struktur kode melalui pemeriksaan tipe. Kombinasi ini menjadikan aplikasi lebih stabil dan mudah diperluas.

Menggunakan Jest untuk Testing di TypeScript

Jest adalah framework testing populer yang dikembangkan oleh Facebook. Ia mendukung TypeScript secara langsung dengan bantuan paket tambahan seperti ts-jest.

Langkah instalasi Jest untuk TypeScript:

npm install --save-dev jest ts-jest @types/jest
npx ts-jest config:init

Kemudian, buat file test sederhana seperti berikut:

// sum.ts
export function sum(a: number, b: number): number {
  return a + b;
}

// sum.test.ts
import { sum } from "./sum";

test("menjumlahkan dua angka", () => {
  expect(sum(2, 3)).toBe(5);
});

Untuk menjalankan test:

npm test

Dalam contoh di atas, TypeScript memastikan bahwa fungsi sum() hanya menerima angka dan mengembalikan angka. Jika tipe data yang diberikan salah, editor akan langsung memberikan peringatan bahkan sebelum test dijalankan.

Testing dengan Vitest: Alternatif Cepat untuk TypeScript

Vitest adalah framework testing modern yang terinspirasi dari Jest, tetapi lebih ringan dan cepat karena dibangun di atas Vite. Ia mendukung TypeScript tanpa konfigurasi tambahan yang rumit.

Instalasi Vitest:

npm install --save-dev vitest

Buat file test dengan struktur berikut:

// greet.ts
export function greet(name: string): string {
  return `Halo, ${name}!`;
}

// greet.test.ts
import { describe, it, expect } from "vitest";
import { greet } from "./greet";

describe("Fungsi greet", () => {
  it("mengembalikan sapaan yang benar", () => {
    expect(greet("Arvi")).toBe("Halo, Arvi!");
  });
});

Jalankan test menggunakan:

npx vitest

Vitest secara otomatis mendeteksi tipe dari TypeScript tanpa perlu konfigurasi tambahan seperti Jest. Hal ini membuat workflow pengujian menjadi lebih efisien dan cocok untuk proyek modern berbasis Vite atau Vue 3.

Menulis Test dengan Tipe yang Kuat

Salah satu keunggulan utama testing di TypeScript adalah kemampuan untuk menulis test dengan tipe yang kuat (strongly typed tests). Misalnya, ketika mengetes class atau fungsi kompleks, kamu bisa memastikan bahwa input dan output sesuai kontrak tipe yang didefinisikan.

Contoh penggunaan tipe pada test kompleks:

interface User {
  id: number;
  name: string;
}

function getUser(id: number): User {
  return { id, name: "Arva" };
}

test("mengambil data user dengan tipe benar", () => {
  const user = getUser(1);
  expect(user).toHaveProperty("name");
  expect(typeof user.name).toBe("string");
});

Dalam contoh ini, TypeScript memastikan bahwa fungsi getUser() selalu mengembalikan objek dengan struktur User. Dengan begitu, bug akibat struktur data tidak konsisten dapat dihindari sejak awal.

Tips Praktis Testing di TypeScript

Berikut beberapa tips agar testing di TypeScript lebih efektif:

  • Aktifkan opsi strict di tsconfig.json untuk pemeriksaan tipe maksimal.

  • Gunakan @types/jest atau @types/vitest agar IDE mengenali fungsi seperti test(), expect(), dan describe().

  • Hindari penggunaan any, gantilah dengan tipe generik atau union untuk menjaga keamanan tipe.

  • Buat test kecil dan spesifik agar mudah di-debug.

  • Gunakan beforeEach dan afterEach untuk menyiapkan dan membersihkan state pengujian.

Kesimpulan

Testing di TypeScript memberikan keseimbangan sempurna antara kecepatan pengujian dan keandalan kode. Dengan menggunakan Jest atau Vitest, developer dapat menulis test yang tidak hanya memverifikasi logika aplikasi, tetapi juga memastikan konsistensi tipe data. Pendekatan ini menjadikan aplikasi lebih stabil, scalable, dan mudah dipelihara di masa depan. Dengan tipe yang kuat, setiap pengujian menjadi lebih aman dan efisien — membantu kamu membangun sistem yang tangguh dan bebas bug.