Intinya
Layanan mock SoapUI mensimulasikan endpoint SOAP atau REST secara lokal, namun memerlukan proses Java, konfigurasi pengiriman manual, dan tidak mudah dibagikan ke seluruh tim tanpa mesin bersama. Smart Mock Apidog menghasilkan respons mock dari skema API Anda, berjalan di cloud, dan otomatis dapat diakses tim.
💡 Apidog adalah platform pengembangan API all-in-one gratis dengan Smart Mock bawaan yang menciptakan endpoint mock instan dari definisi API Anda tanpa proses Java lokal. Coba Apidog gratis, tanpa kartu kredit.
Pendahuluan
Layanan mock menyelesaikan kebutuhan penting dalam pengembangan API: menguji klien sebelum backend tersedia, atau menguji edge case (error, respons lambat) tanpa mengganggu sistem nyata.
Mock SoapUI sudah lama tersedia dan berfungsi dengan menjalankan server HTTP lokal yang merespons sesuai aturan konfigurasi. Namun, proses lokal ini menimbulkan hambatan: server berhenti jika SoapUI ditutup, tidak mudah dibagikan ke tim, dan konfigurasi seringkali rumit.
Panduan ini membahas cara kerja dan setup mock SoapUI, masalah umum, dan perbandingan pendekatan Apidog.
Cara Kerja Layanan Mock SoapUI
SoapUI membuat layanan mock dari interface SOAP atau REST di project Anda:
- Mendengarkan pada port lokal yang Anda pilih (misal
http://localhost:8088/MockService) - Menerima permintaan masuk
- Mencocokkan permintaan dengan respons mock menggunakan logika dispatch
- Mengembalikan respons sesuai konfigurasi
Untuk SOAP, respons mock dapat otomatis dibuat dari WSDL sebagai stub untuk setiap operasi—berguna untuk simulasi sebelum endpoint asli tersedia.
Menyiapkan Layanan Mock SoapUI (Langkah Demi Langkah)
Untuk Antarmuka SOAP
- Di project SoapUI, klik kanan interface SOAP pada project tree.
- Pilih Generate MockService.
- Atur:
- Nama layanan (misal: "OrderService Mock")
- Port (default 8088, ganti jika bentrok)
- Path (misal:
/orders)
- Klik OK. Akan muncul node MockService di project tree.
- Expand MockService, akan ada MockOperation untuk tiap operasi SOAP.
- Klik dua kali MockOperation untuk edit respons mock.
- Edit XML respons sesuai nilai yang ingin disimulasikan.
- Tekan tombol play (hijau) pada editor MockService untuk mulai server mock.
Mock berjalan di http://localhost:8088/orders. Arahkan klien ke URL ini.
Untuk Antarmuka REST
- Klik kanan pada interface/resource REST di project tree.
- Pilih Add to MockService atau Generate MockService.
- Atur port dan path seperti di atas.
- Untuk setiap resource/metode, edit isi respons mock dan kode status.
- Jalankan layanan mock.
Mengonfigurasi Pengiriman (Dispatch)
Default-nya, SoapUI mengembalikan respons mock pertama. Untuk respons berbeda tergantung input, gunakan skrip dispatch (Groovy) atau tipe dispatch SEQUENCE.
Dispatch Berurutan: Respons diberikan secara berurutan pada setiap permintaan.
Dispatch SCRIPT: Skrip Groovy menentukan respons berdasarkan isi permintaan.
Contoh dispatch script:
def request = mockRequest.getRequestContent()
if (request.contains("orderId>12345")) {
return "OrderFoundResponse"
} else {
return "OrderNotFoundResponse"
}
Buat beberapa respons mock (misal "OrderFoundResponse", "OrderNotFoundResponse"), lalu dispatch script memilihnya berdasarkan permintaan.
Masalah Umum Layanan Mock SoapUI
Masalah 1: Mock Berhenti Saat SoapUI Ditutup
Mock berjalan di proses JVM SoapUI. Jika SoapUI ditutup, mock berhenti, tim lain kehilangan akses.
Solusi sementara:
- Biarkan SoapUI tetap terbuka di mesin/VM khusus
- Jalankan dengan command line:
mockservicerunner.sh -p 8088 -s "OrderService Mock" project.xml - Gunakan server bersama yang selalu menjalankan mock
Semua solusi ini tetap membutuhkan Java dan setup SoapUI di server.
Masalah 2: Berbagi Mock ke Seluruh Tim
Mock di localhost:8088 hanya lokal. Tim lain perlu akses jaringan ke mesin tersebut (atur firewall/VPN) atau menjalankan mock di server bersama.
Masalah 3: Dispatch Script Bermasalah dengan XML Kompleks
Dispatch script di SoapUI menggunakan pencocokan string Groovy pada XML mentah. Namespace berbeda dapat menyebabkan pencarian literal seperti <orderId>12345</orderId> gagal. Perlu parsing XML menggunakan GroovyUtils, menambah kompleksitas.
Masalah 4: Status Tidak Bertahan Antar Request
Mock SoapUI default stateless. Jika ingin memock workflow (misal POST lalu GET), harus membuat script dispatch Groovy yang menyimpan status di variabel bersama—solusi ini rawan error.
Masalah 5: SSL pada Layanan Mock
Menyiapkan HTTPS untuk mock SoapUI butuh keystore, konfigurasi SSL SoapUI, dan setup sertifikat klien. Jauh lebih rumit dibanding mock HTTP.
Smart Mock Apidog: Perbandingannya
Mock Apidog berbasis desain API, bukan proses.
Setelah endpoint API didefinisikan di Apidog, endpoint mock otomatis muncul di cloud, tanpa setup tambahan.
Contoh URL mock:
https://{your-project}.mock.apidog.io/orders/{id}
Keunggulan:
- Selalu aktif (cloud, tidak perlu proses lokal)
- Bisa diakses semua anggota tim
- Respons otomatis dari skema yang Anda definisikan
Cara Apidog Menghasilkan Respons Mock
Apidog membaca skema respons (JSON Schema/OpenAPI) dan menghasilkan data palsu realistis. Misal, orderId tipe string UUID akan menghasilkan UUID acak. amount tipe number dengan range akan menghasilkan angka dalam rentang tersebut.
Atur juga aturan custom, seperti selalu mengembalikan orderId tertentu untuk prediktabilitas.
Endpoint SOAP di Apidog Mock
Smart Mock Apidog didesain untuk REST JSON. Untuk SOAP, setup manual: buat permintaan di Apidog, atur respons kustom dengan envelope SOAP, dan gunakan server mock Apidog untuk mengembalikan respons. Tidak seotomatis SoapUI WSDL, tapi cukup untuk mock SOAP sederhana tanpa proses Java.
Mocking Stateful
Apidog mendukung skrip respons kustom (JavaScript) untuk mock stateful. Periksa isi permintaan dan kembalikan respons berbeda, seperti dispatch script di SoapUI, tapi menggunakan JavaScript.
Perbandingan Berdampingan
| Fitur | Mock SoapUI | Smart Mock Apidog |
|---|---|---|
| Membutuhkan Java | Ya | Tidak |
| Selalu Aktif | Hanya dengan runner baris perintah | Ya (cloud) |
| Dapat diakses tim | Jaringan manual | Ya, melalui URL bersama |
| Pembuatan otomatis WSDL | Ya | Tidak |
| Berbasis skema REST | Tidak | Ya |
| Respons dinamis | Pengiriman (dispatch) Groovy | Skrip mock JavaScript |
| Dukungan HTTPS | Pengaturan keystore manual | Bawaan |
| Mocking Berstatus | Melalui variabel Groovy | Melalui skrip JavaScript |
| Gratis | Ya | Ya |
Kapan Menggunakan Masing-Masing
Gunakan SoapUI Mock Service jika:
- Perlu mock layanan SOAP berbasis WSDL dengan stub respons otomatis
- Tim bekerja offline/di jaringan ketat
- Sudah dalam ekosistem SoapUI
Gunakan Smart Mock Apidog jika:
- Mock endpoint REST, ingin akses bersama tanpa setup jaringan
- Ingin server mock selalu aktif tanpa intervensi
- Mendefinisikan kontrak API sebelum implementasi
- Ingin menghindari instalasi dan setup Java
Pertanyaan Umum
Bisakah menjalankan mock SoapUI tanpa GUI (headless)?
Bisa. Gunakan mockservicerunner.sh (Linux/macOS) atau mockservicerunner.bat (Windows) dengan file project dan nama service. Tetap butuh Java, tapi tanpa GUI.
Apakah Apidog mendukung mock SOAP?
Sebagian. Bisa atur respons custom dengan SOAP XML, tapi tidak ada stub otomatis dari WSDL.
Bisakah mock SoapUI simulasikan respons lambat?
Bisa. Atur "Delay" di konfigurasi respons mock (ms). Apidog juga mendukung delay untuk simulasi jaringan lambat.
Berapa banyak request mock yang bisa ditangani Apidog?
Server mock cloud Apidog cukup untuk pengembangan/pengujian umum. Untuk stress test volume tinggi, disarankan dedicated mock server.
Jika dua anggota tim butuh respons berbeda untuk endpoint sama?
Di SoapUI, masing-masing jalankan mock lokal dan bisa konfigurasi sendiri. Di Apidog, bisa buat beberapa environment atau gunakan query param untuk memilih skenario, serta fitur "Mock expects" untuk mencocokkan kondisi request tertentu.
Apakah mock Apidog butuh skema lengkap?
Skema respons membantu Apidog menghasilkan data realistis, tapi Anda bisa membuat respons mock manual tanpa skema lengkap.
Layanan mock SoapUI efektif namun terikat proses Java lokal. Untuk tim modern yang memerlukan mock persisten dan mudah dibagikan, pendekatan cloud Apidog mengurangi overhead koordinasi.
Top comments (0)