Intinya
Layanan mock SoapUI mensimulasikan titik akhir SOAP atau REST secara lokal, tetapi layanan ini memerlukan proses Java yang berjalan, konfigurasi pengiriman (dispatch) manual, dan tidak dapat dibagikan di seluruh tim tanpa mesin bersama. Smart Mock Apidog menghasilkan respons mock dari skema API Anda, berjalan di cloud, dan berbagi secara otomatis dengan tim Anda.
Pendahuluan
Layanan mock memecahkan masalah umum dalam pengembangan API: Anda ingin menguji bagaimana kode klien Anda menangani layanan sebelum layanan tersebut siap, atau Anda ingin menguji kasus tepi (kesalahan, respons lambat) tanpa menyebabkannya dalam sistem nyata.
Fitur layanan mock SoapUI telah tersedia sejak versi awal dan berfungsi. Fitur ini menjalankan server HTTP lokal yang menanggapi permintaan sesuai aturan yang Anda konfigurasikan. Masalahnya adalah bahwa proses lokal ini menciptakan gesekan: proses ini mati saat Anda menutup SoapUI, anggota tim lain tidak dapat mengaksesnya tanpa trik jaringan, dan antarmuka konfigurasinya merepotkan.
Panduan ini mencakup cara kerja layanan mock SoapUI, cara mengaturnya, masalah umum yang dihadapi tim, dan bagaimana pendekatan Apidog membandingkannya.
Cara kerja layanan mock SoapUI
SoapUI membuat layanan mock dari antarmuka SOAP atau REST yang ada di proyek Anda. Layanan mock:
- Mendengarkan di port lokal yang Anda konfigurasikan (misalnya,
http://localhost:8088/MockService) - Mencegat permintaan masuk
- Mencocokkan permintaan dengan "respons mock" menggunakan logika pengiriman (dispatch)
- Mengembalikan respons yang dikonfigurasi
Untuk layanan SOAP, SoapUI dapat secara otomatis menghasilkan respons mock dari WSDL Anda, membuat respons stub untuk setiap operasi. Ini berguna untuk mensimulasikan layanan sebelum layanan itu ada atau sebelum Anda memiliki akses ke titik akhir nyata.
Menyiapkan layanan mock SoapUI (langkah demi langkah)
Untuk antarmuka SOAP
- Di proyek SoapUI Anda, klik kanan pada antarmuka SOAP di pohon proyek.
- Pilih "Generate MockService."
- Dalam dialog, konfigurasikan:
- Nama layanan (misalnya, "OrderService Mock")
- Nomor port (default adalah 8088; ubah jika port tersebut sedang digunakan)
- Jalur (misalnya,
/orders)
- Klik OK. SoapUI membuat node MockService di pohon proyek Anda.
- Luaskan node MockService. Anda akan melihat "MockOperation" untuk setiap operasi SOAP di antarmuka.
- Klik dua kali MockOperation untuk membuka editor respons mock.
- Edit XML respons SOAP untuk mengembalikan nilai yang ingin Anda simulasikan.
- Klik tombol putar hijau di editor MockService untuk memulai server lokal.
Mock Anda sekarang berjalan di http://localhost:8088/orders. Arahkan kode klien Anda ke URL ini.
Untuk antarmuka REST
- Klik kanan pada antarmuka atau sumber daya REST di pohon proyek.
- Pilih "Add to MockService" atau "Generate MockService."
- Konfigurasikan port dan jalur seperti di atas.
- Untuk setiap sumber daya/metode, konfigurasikan isi respons mock dan kode status.
- Mulai layanan mock.
Mengonfigurasi pengiriman (dispatch)
Secara default, layanan mock SoapUI mengembalikan respons mock pertama yang ditemukannya. Jika Anda ingin respons yang berbeda untuk masukan yang berbeda, konfigurasikan "skrip pengiriman (dispatch)" (Groovy) atau gunakan tipe pengiriman "SEQUENCE".
Pengiriman (dispatch) Berurutan: Mengembalikan respons dalam urutan tetap pada panggilan berturut-turut. Panggilan 1 mendapatkan respons A, panggilan 2 mendapatkan respons B.
Pengiriman (dispatch) SCRIPT: Skrip Groovy memeriksa permintaan dan mengembalikan nama respons berdasarkan logika.
Contoh skrip pengiriman (dispatch):
def request = mockRequest.getRequestContent()
if (request.contains("orderId>12345")) {
return "OrderFoundResponse"
} else {
return "OrderNotFoundResponse"
}
Anda membuat beberapa respons mock bernama (misalnya, "OrderFoundResponse," "OrderNotFoundResponse") dan skrip pengiriman (dispatch) memilih mana yang akan dikembalikan berdasarkan isi permintaan yang masuk.
Masalah Umum Layanan Mock SoapUI
Masalah 1: Mock Berhenti Saat SoapUI Ditutup
Layanan mock SoapUI berjalan sebagai bagian dari proses JVM SoapUI. Saat Anda menutup SoapUI, mock akan berhenti. Rekan tim yang menggunakan mock akan kehilangan akses.
Solusi Sementara:
- Biarkan SoapUI tetap terbuka di mesin atau VM khusus
- Gunakan opsi server mock baris perintah SoapUI:
mockservicerunner.sh -p 8088 -s "OrderService Mock" project.xml - Gunakan mesin bersama yang persisten yang selalu menjalankan mock
Tidak ada yang elegan. Opsi baris perintah membantu, tetapi masih membutuhkan mesin dengan SoapUI dan Java terinstal.
Masalah 2: Berbagi Mock di Seluruh Tim
Mock di localhost:8088 hanya dapat diakses oleh orang yang menjalankannya. Agar rekan tim dapat mengakses mock yang sama, Anda memerlukan akses jaringan ke mesin tersebut (aturan firewall, pengaturan VPN) atau untuk menjalankan mock di server bersama.
Masalah 3: Skrip Pengiriman (Dispatch) Rusak dengan XML Kompleks
Skrip pengiriman (dispatch) SoapUI menggunakan pencocokan string Groovy pada isi XML mentah. Amplop SOAP memiliki namespace, dan nilai logis yang sama dapat muncul dengan awalan namespace yang berbeda tergantung pada klien. Skrip yang mencari string literal seperti <orderId>12345</orderId> rusak ketika awalan berbeda.
Perbaikan memerlukan parsing XML yang tepat dalam skrip pengiriman (dispatch) menggunakan kelas GroovyUtils SoapUI, yang meningkatkan kompleksitas.
Masalah 4: Status Tidak Bertahan Antara Panggilan
Layanan mock SoapUI tanpa status (stateless) secara default. Jika Anda ingin memock alur kerja buat-lalu-baca (POST untuk membuat, GET untuk mengambil), Anda memerlukan skrip pengiriman (dispatch) Groovy yang menyimpan status dalam variabel bersama. Ini berfungsi tetapi rapuh.
Masalah 5: SSL untuk Layanan Mock
Mengonfigurasi HTTPS untuk layanan mock SoapUI memerlukan penyiapan keystore, mengonfigurasi pengaturan SSL SoapUI, dan mengarahkan klien ke sertifikat yang benar. Ini jauh lebih rumit daripada mock khusus HTTP.
Smart Mock Apidog: Perbandingannya
Pendekatan mock Apidog dimulai dari desain API, bukan dari proses yang berjalan.
Saat Anda mendefinisikan titik akhir API di Apidog (metode, jalur, skema permintaan, skema respons), Apidog secara otomatis menghasilkan titik akhir mock di cloud. Tidak perlu konfigurasi.
URL mock terlihat seperti: https://{your-project}.mock.apidog.io/orders/{id}
URL ini:
- Selalu berjalan (tidak ada proses lokal untuk memulai atau menghentikan)
- Dapat diakses oleh setiap anggota tim dengan akses ke proyek
- Menghasilkan respons dari skema yang Anda definisikan
Bagaimana Apidog Menghasilkan Respons Mock
Apidog membaca skema respons Anda (definisi respons JSON Schema atau OpenAPI) dan menghasilkan data palsu yang realistis. Skema yang mengatakan orderId adalah string dalam format UUID mengembalikan UUID acak. Skema yang mengatakan amount adalah number antara 0 dan 10000 mengembalikan angka dalam rentang tersebut.
Anda juga dapat mengonfigurasi aturan mock kustom untuk bidang tertentu. Atur orderId untuk selalu mengembalikan "test-123" saat Anda membutuhkan nilai yang dapat diprediksi.
Titik Akhir SOAP di Apidog Mock
Smart Mock Apidog dirancang untuk titik akhir REST dengan respons JSON. Untuk titik akhir SOAP, pengaturan mock bersifat manual: Anda membuat permintaan di Apidog, mengonfigurasi respons kustom dengan amplop SOAP, dan menggunakan server mock Apidog untuk mengembalikannya.
Ini kurang otomatis dibandingkan dengan pembuatan mock berbasis WSDL SoapUI, tetapi berfungsi untuk tim yang membutuhkan mock SOAP sederhana tanpa menjalankan proses Java lokal.
Mocking Berstatus (Stateful)
Apidog mendukung skrip respons kustom untuk perilaku mock berstatus. Anda dapat memeriksa isi permintaan dalam skrip mock JavaScript dan mengembalikan respons yang berbeda berdasarkan isi permintaan, mirip dengan skrip pengiriman (dispatch) SoapUI tetapi dalam 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 layanan mock SoapUI ketika:
- Anda perlu memock layanan SOAP berbasis WSDL dan menginginkan stub respons yang dihasilkan secara otomatis
- Tim Anda bekerja secara offline atau di balik kontrol jaringan yang ketat
- Anda sudah sangat mendalami ekosistem SoapUI dan tidak ingin mengubah alat
Gunakan Smart Mock Apidog ketika:
- Tim Anda memock titik akhir REST dan membutuhkan akses bersama tanpa pengaturan jaringan
- Anda ingin server mock yang tetap berjalan tanpa intervensi manual
- Anda memulai proyek baru dan mendefinisikan kontrak API sebelum implementasi
- Anda ingin menghindari pemasangan dan pemeliharaan lingkungan Java untuk layanan mock
Pertanyaan Umum
Dapatkah saya menjalankan layanan mock SoapUI tanpa GUI (headlessly)?Ya. SoapUI menyertakan mockservicerunner.sh (Linux/macOS) dan mockservicerunner.bat (Windows). Jalankan dengan jalur file proyek dan nama layanan. Anda masih memerlukan Java terinstal, tetapi Anda tidak perlu membuka GUI.
Apakah Apidog mendukung layanan mock SOAP?Sebagian. Anda dapat mengonfigurasi respons kustom dengan SOAP XML di server mock Apidog. Anda tidak mendapatkan pembuatan otomatis respons stub berbasis WSDL. Untuk tim dengan antarmuka SOAP yang sudah dipahami dengan baik, pengaturan manual dapat dikelola.
Bisakah layanan mock SoapUI mensimulasikan respons lambat?Ya. Dalam konfigurasi respons mock, atur nilai "Penundaan" dalam milidetik. Apidog juga mendukung konfigurasi penundaan respons untuk mensimulasikan kondisi jaringan yang lambat.
Berapa banyak permintaan mock yang dapat ditangani Apidog?Server mock cloud Apidog menangani beban pengembangan dan pengujian yang umum. Untuk pengujian kinerja volume tinggi, alat server mock khusus mungkin lebih tepat.
Apa yang terjadi jika dua anggota tim membutuhkan respons mock yang berbeda untuk titik akhir yang sama?Di SoapUI, setiap orang menjalankan mock lokal mereka sendiri dan dapat mengonfigurasinya secara independen. Di Apidog, Anda dapat membuat beberapa lingkungan atau menggunakan parameter kueri untuk memilih skenario respons yang berbeda. Fitur "Mock expects" Apidog memungkinkan Anda mencocokkan kondisi permintaan tertentu dengan respons tertentu.
Apakah mock Apidog memerlukan API untuk didefinisikan sepenuhnya terlebih dahulu?Skema respons membantu Apidog menghasilkan data realistis, tetapi Anda dapat membuat respons mock manual tanpa skema lengkap. Definisikan titik akhir, atur isi respons kustom, dan mock akan berfungsi.
Layanan mock SoapUI fungsional tetapi terikat pada proses Java lokal. Untuk tim modern yang membutuhkan mock persisten yang dibagikan, pendekatan berbasis cloud Apidog menghilangkan biaya koordinasi.
