Saya sedang mengerjakan proyek baru yang akan meminta data dari API REST pihak ke-3. Ini untuk umpan data olahraga waktu nyata, jadi umpan itu hanya berfungsi saat permainan benar-benar terjadi.
Meskipun pihak ke-3 memberikan dokumentasi yang baik (XSD, dll), mereka tidak memiliki cara untuk mensimulasikan gim yang terjadi, dan untuk menguji kode yang saya tulis terhadap API ini, saya harus menunggu gim yang sebenarnya terjadi.
Satu-satunya jalan saya adalah menulis kode untuk mensimulasikan permainan saya sendiri, tetapi sepertinya banyak pekerjaan. Bagaimana Anda mendekati ini?
Jawaban:
Ini adalah kasus penggunaan yang sempurna untuk objek tiruan . Ada perpustakaan mengejek untuk setiap bahasa populer. Anda ingin mengejek objek yang menyediakan respons layanan REST untuk mengembalikan data pengujian. Anda dapat membuat sendiri data pengujian atau mengumpulkannya dari panggilan sebelumnya ke sistem langsung.
sumber
Tunggu sampai pertandingan terjadi. Abadikan setiap peristiwa dari umpan. Tulis simulator yang memutar ulang acara pada waktu yang tepat. Voila, Anda memiliki simulator umpan dengan data nyata.
sumber
Saya sarankan untuk menulis simulator Anda sendiri. Anda dapat menggunakannya untuk menguji segala macam skenario;
Ketika saya melakukan ini di masa lalu, saya telah menggunakan nilai "khusus" dalam pesan permintaan untuk meminta simulator melakukan apa yang saya butuhkan. Ini juga memungkinkan untuk menjalankan tes ujung ke ujung tanpa keluar dari lingkungan pengembangan Anda.
Sunting: Misalnya, jika proyek Anda mengirimkan XML ke layanan pihak ke-3, permintaan mungkin termasuk misalnya
<value>50.00</value>
. Simulator dapat dikodekan (atau, lebih baik, dikonfigurasikan) sehingga 50,00 => meledak, 60,00 => sampah, 70,00 => tutup koneksi, dan sebagainya. Idenya adalah bahwa perilaku simulator tergantung pada inputnya, yang Anda kontrol di setiap test case.sumber
Mengingat itu mungkin taruhan menyediakan beberapa sampel data (dan ini dapat disimpan selama fase integrasi), saran saya adalah mengatur umpan tersebut dengan cara ini:
Mungkin penyedia menawarkan 2 jenis pembaruan: Push (POST) dan Pull (GET).
Pada titik ini Anda harus
Kelola pengembangan dan pengujian
Tanpa membahas detail teknologi yang akan digunakan, Anda mendapatkan mini-server , yang hanya merespons 4 URL (atau yang diperlukan tergantung pada apa yang ditawarkan penyedia), dan layanan mini-push .
Secara pribadi saya akan melakukan server Perl sederhana atau sama tetapi dengan Nodejs. Berkenaan dengan injeksi data, akan cukup waktu, yang memanggil browser offline ( CURL , WGET )
sumber
Saya mensimulasikan REST API dengan menggunakan kombinasi cucumberjs, phantomjs dengan menetapkan server proxy ke 127.0.0.1 dan mengaitkan proses node.js dengan
http-proxy
dannock
sana. KetimunJS bukan bagian penting, Anda dapat menulis skenario uji dengan cara apa pun, sisanya adalah kunci untuk simulasi. Ia dapat mengolok-olok hanya dengan mencocokkan-meminta-mengembalikan-data, tetapi Anda juga dapat memfilter menurut pola dan fungsi panggilan balik untuk menghasilkan balasan, sehingga Anda dapat mensimulasikan ke tingkat granularitas apa pun yang Anda butuhkan (di akhir ekstrem dengan server demo penuh, tetapi Anda dapat melakukannya secara bertahap).Ini bekerja dengan baik:
http-proxy
. Jadi setiap pemuatan "normal" (halaman, gambar) berfungsi.nock
untuk itu.Dalam skenario saya, saya menggabungkannya dengan tes mentimun js dalam proses yang sama, jadi begini:
nock
mengejek HTTP untuk skenario yang diuji.Sisanya adalah seperti yang ditunjukkan sebelumnya dalam paragraf ini (yaitu, itu adalah sedikit siklus, saya sebagai pelari tes menginstruksikan phantomjs untuk memuat halaman, yang meneruskan semua permintaan kembali kepada saya, dan saya meneruskannya ke internet; atau mencegat mereka jika itu adalah API yang diuji).
sumber