Alternatif Mock Service Worker (MSW): Kapan Menggunakan Platform Mocking API Lengkap

Mock Service Worker sangat bagus untuk pengujian *frontend*. Pelajari di mana MSW cocok, di mana tidak, dan alternatif MSW terbaik untuk *mock* bersama yang berbasis skema.

Ashley Innocent

Ashley Innocent

24 June 2026

Alternatif Mock Service Worker (MSW): Kapan Menggunakan Platform Mocking API Lengkap

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Jika Anda menulis pengujian frontend, kemungkinan besar Anda pernah menemukan Mock Service Worker (MSW). Ini adalah pustaka pilihan untuk mencegat permintaan di dalam browser dan Node, dan untuk pengujian unit dan komponen, sulit untuk dikalahkan. Panduan ini menjelaskan apa yang dilakukan MSW dengan baik, di mana ia mulai tidak diskalakan, dan kapan platform mocking API yang di-host lebih masuk akal.

tombol

Apa itu Mock Service Worker?

Mock Service Worker adalah pustaka JavaScript yang mencegat permintaan jaringan di sumbernya. Di browser, ia mendaftarkan Service Worker yang menangkap panggilan `fetch` dan `XMLHttpRequest` yang keluar. Di Node, ia menambal lapisan permintaan sehingga handler yang sama berjalan di Jest atau Vitest. Anda menulis handler permintaan yang cocok dengan metode dan jalur, lalu mengembalikan respons apa pun yang Anda inginkan.

Desainnya cerdas. Kode aplikasi Anda terus memanggil API jaringan yang sesungguhnya. MSW berada di tengah dan menjawabnya, sehingga Anda tidak perlu men-stub `fetch` atau menukar klien HTTP Anda. Definisi mock yang sama berfungsi dalam pengujian dan dalam build pengembangan yang sedang berjalan, itulah sebabnya banyak tim React dan Vue menggunakannya. Anda dapat menggali kode sumber MSW di GitHub untuk melihat cara kerja lapisan intersepsi.

Handler yang umum terlihat seperti ini:

import { http, HttpResponse } from 'msw'

export const handlers = [
  http.get('/api/users/:id', ({ params }) => {
    return HttpResponse.json({ id: params.id, name: 'Ada Lovelace' })
  }),
]

Itulah daya tariknya. Mock berada di samping kode Anda, dikontrol versinya dengan pengujian Anda, dan berjalan di mana pun JavaScript Anda berjalan.

Di mana MSW bersinar

MSW sangat cocok ketika mock dan konsumen berada dalam basis kode yang sama. Beberapa kasus di mana ini adalah alat yang tepat:

Jika itu menggambarkan situasi Anda, Anda mungkin tidak membutuhkan hal lain. MSW gratis, sumber terbuka, dan dibangun khusus untuk ini.

Di mana MSW mulai menjadi beban

Hal yang sama yang membuat MSW hebat dalam satu repo, mock yang hidup sebagai kode di repo itu, adalah yang membatasinya setelah lebih banyak orang terlibat. Inilah di mana tim cenderung melebihinya.

Konsumen Non-JavaScript

Handler MSW adalah JavaScript. Jika tim seluler Anda menulis Swift atau Kotlin, atau pengujian integrasi backend Anda berjalan di Go atau Python, mereka tidak dapat mengimpor handler Anda. Mereka akan membutuhkan mock mereka sendiri, yang akan berbeda dari milik Anda. Server mock yang agnostik bahasa yang berbicara HTTP melalui URL sungguhan bekerja untuk setiap klien, tanpa memandang bahasa.

Mock Bersama yang Selalu Aktif

MSW berjalan di dalam suatu proses. Tidak ada URL bersama yang dapat diakses oleh insinyur QA, desainer, atau tim mitra dari mesin mereka sendiri. Saat Anda menginginkan satu titik akhir yang digunakan beberapa orang sekaligus, Anda memerlukan server mock yang di-host dengan alamat stabil, bukan Service Worker yang terikat pada satu tab browser.

Alur Kerja Berbasis Desain Awal dan Skema

Jika Anda mendesain API di OpenAPI sebelum menulis kode, Anda menginginkan mock yang dihasilkan dari spesifikasi secara otomatis, sehingga mock tidak dapat bertentangan dengan kontrak. MSW mengharapkan Anda untuk menulis handler secara manual. Menghasilkan mock langsung dari skema adalah model yang berbeda. Anda dapat membaca lebih lanjut tentang pendekatan ini dalam panduan mocking API dan pola-pola di sekitarnya.

Data Dinamis Realistis dalam Skala Besar

MSW mengembalikan apa pun yang dikodekan oleh handler Anda. Untuk data yang mirip aslinya di banyak bidang, Anda menulis logika itu sendiri. Platform yang menggabungkan generasi gaya faker dan inferensi nama bidang memberi Anda respons yang realistis tanpa perlu membuatnya satu per satu secara manual.

MSW vs. Platform Mocking API Lengkap

Berikut adalah perbandingan jujur. Tidak ada kolom yang "lebih baik" secara abstrak; keduanya memecahkan masalah yang berbeda.

Kemampuan Mock Service Worker Platform API yang di-host (mis. Apidog)
Berjalan di dalam pengujian unit/komponen JS Ya, native Tidak, itu bukan pustaka pengujian JS
Agnostik bahasa melalui HTTP Tidak (hanya JS) Ya, klien apa pun
URL bersama untuk seluruh tim Tidak Ya, server mock yang di-host
Hasilkan mock dari OpenAPI Manual Otomatis dari skema
Generasi data cerdas/dinamis Dikodekan secara manual Terpasang
Tersimpan di repo Anda dengan pengujian Ya Disimpan di proyek bersama
Biaya Gratis, sumber terbuka Tingkat gratis + paket berbayar

Kesimpulannya: MSW adalah pilihan yang tepat untuk pengujian frontend dan pengembangan lokal. Platform seperti Apidog adalah pilihan yang tepat ketika mock harus dibagikan, netral bahasa, atau didorong oleh spesifikasi.

Apidog sebagai Pelengkap, bukan Pengganti

Sebagai klarifikasi, Apidog bukanlah pengganti langsung MSW di dalam Jest atau Vitest. Ini bukan pustaka JavaScript yang Anda impor ke dalam file pengujian. Anggap saja sebagai lapisan di atas pengujian unit Anda, tempat di mana mock menjadi sumber daya bersama yang agnostik bahasa untuk seluruh tim.

Inilah yang terlihat dalam praktik. Anda mendesain atau mengimpor API di Apidog, dan itu secara otomatis menghasilkan titik akhir mock dari skema. Mock tersebut mendapatkan URL nyata yang dapat dipanggil oleh rekan satu tim frontend, seluler, dan QA Anda. Apidog mengisi respons dengan data realistis dengan menyimpulkan dari nama bidang, sehingga bidang yang disebut `email` mengembalikan email dan `createdAt` mengembalikan tanggal. Anda juga dapat menulis aturan khusus ketika Anda membutuhkan respons 500 tertentu atau kasus ekstrem tertentu.

Karena mock berasal dari skema yang sama dengan desain dan pengujian Anda, mock tetap sinkron dengan kontrak. Itulah bagian yang tidak dapat dijamin oleh handler yang ditulis secara manual. Jika Anda ingin melihat bagaimana generasi skema-ke-mock dibandingkan di berbagai alat, rangkuman alat mocking API terbaik ini menempatkan opsi-opsi tersebut secara berdampingan.

Pembagian praktis yang diterapkan banyak tim:

Anda tidak memilih salah satu. Anda menggunakan masing-masing di tempat yang sesuai. Unduh Apidog jika Anda ingin mencoba sisi hosting di samping pengaturan MSW yang sudah ada.

Alternatif MSW Lain yang Perlu Diketahui

MSW bukan satu-satunya pustaka mocking, dan platform bukan satu-satunya pilihan Anda. Tergantung pada tumpukan Anda:

Masing-masing memiliki kelebihan dan kekurangan. WireMock dan Prism condong ke pekerjaan backend dan kontrak; Mockoon dan json-server condong ke pengaturan lokal yang cepat. Jika hambatan Anda secara spesifik adalah "MSW tidak dapat membantu rekan tim non-JS saya," server mock berbasis HTTP apa pun menyelesaikannya. Untuk sudut pandang frontend yang lebih luas, lihat bagaimana tim menangani mocking API di React dengan Axios.

Pertanyaan yang Sering Diajukan

Apakah MSW gratis?

Ya. Mock Service Worker adalah sumber terbuka di bawah lisensi MIT dan gratis untuk digunakan dalam proyek apa pun, baik komersial maupun non-komersial. Anda hanya mulai membayar saat Anda beralih ke platform hosting untuk mock bersama, dan alat seperti Apidog juga menyertakan tingkatan gratis untuk itu.

Bisakah Apidog menggantikan MSW dalam pengujian unit saya?

Tidak, dan Anda tidak boleh mencoba melakukannya. MSW mencegat permintaan di dalam test runner JavaScript Anda. Apidog adalah platform yang di-host, bukan pustaka yang dapat diimpor, sehingga tidak dapat berada di dalam Jest atau Vitest seperti halnya MSW. Gunakan Apidog untuk mock bersama, lintas tim, atau berbasis skema. Jika Anda fokus murni pada sisi test runner, panduan tentang cara mem-mock panggilan API ini mencakup pendekatan-pendekatan dalam kode.

Apakah MSW berfungsi di Node, atau hanya di browser?

Keduanya. Di browser, MSW menggunakan Service Worker. Di Node, ia menambal lapisan permintaan sehingga handler yang sama berjalan di Jest, Vitest, atau lingkungan pengujian Node apa pun. Mode ganda itu adalah salah satu kekuatan terbesarnya untuk tim JS full-stack.

Kapan saya harus beralih dari MSW ke server mock yang di-host?

Beralih, atau lebih tepatnya menambahkan satu, ketika mock perlu dibagikan. Sinyal yang paling jelas: klien non-JavaScript membutuhkannya, beberapa orang membutuhkan URL stabil yang sama, atau Anda mendesain API dengan spesifikasi terlebih dahulu dan ingin mock dihasilkan dari OpenAPI secara otomatis.

Kesimpulan

MSW sangat baik dalam apa yang dibangun untuknya: mencegat permintaan di dalam JavaScript untuk pengujian frontend dan unit. Itu tidak mencoba menjadi mock yang dibagikan, di-host, dan agnostik bahasa, dan itu tidak masalah. Ketika mock Anda perlu keluar dari repo, ketika bahasa lain atau tim lain membutuhkannya, atau ketika Anda ingin mock dihasilkan dari spesifikasi, itulah saatnya untuk menambahkan platform lengkap di sampingnya.

Apidog menangani sisi bersama yang digerakkan oleh skema: server mock yang di-host dengan URL nyata, mock otomatis dari desain OpenAPI Anda, dan data realistis di luar kotak. Pertahankan MSW di mana ia kuat, dan biarkan Apidog mencakup semua hal di luar batas test runner Anda. Unduh Apidog dan arahkan frontend Anda ke mock bersama untuk melihat perbedaannya.

tombol

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.