Pelajari cara membuat stub implementasi klien nyata untuk menyuntikkan tiruan untuk pengujian unit. Menggunakan klien tiruan dengan Google Cloud Client Libraries for Rust memungkinkan Anda menulis pengujian unit yang terkontrol dan andal yang tidak melakukan panggilan jaringan atau menimbulkan biaya penagihan.
Dependensi
Ada beberapa framework tiruan yang tersedia untuk Rust. Panduan ini menggunakan
mockall. Tambahkan sebagai dependensi pengembangan:
cargo add --dev mockall
Selain itu, panduan ini menggunakan klien Speech untuk mempermudah pemahaman contoh (tetapi konsep ini berlaku untuk semua klien).
Tambahkan dependensi yang diperlukan ke file Cargo.toml Anda:
cargo add google-cloud-speech-v2 google-cloud-lro
Menyimulasikan klien
Untuk menguji kode dengan klien tiruan, Anda menentukan struct tiruan, mengonfigurasi perilaku yang diharapkan untuk skenario pengujian, lalu menyuntikkan tiruan tersebut ke dalam logika aplikasi. Contoh berikut menunjukkan alur kerja ini.
Pertama, tambahkan pernyataan use untuk menyederhanakan kode:
Asumsikan aplikasi memiliki fungsi yang menggunakan klien Speech
untuk memanggil GetRecognizer, menetapkan kolom name permintaan,
dan memproses respons server.
Anda dapat menguji cara aplikasi menangani berbagai respons dari layanan.
Selanjutnya, tentukan struktur tiruan. Struct ini mengimplementasikan
trait speech::stub::Speech.
Buat instance tiruan. Perhatikan bahwa makro
mockall::mock! menambahkan awalan Mock ke nama struct yang
sebelumnya ditentukan.
Tetapkan ekspektasi pada tiruan. Misalnya, harapkan kode untuk memanggil
GetRecognizer dengan nama tertentu dan simulasikan respons yang berhasil
dari layanan.
Buat klien Speech menggunakan tiruan:
Memanggil fungsi:
Verifikasi hasilnya:
Menyimulasikan error
Menyimulasikan error mirip dengan menyimulasikan keberhasilan. Untuk menyimulasikan error, ubah hasil yang ditampilkan oleh tiruan.
Klien yang dibuat dengan from_stub() tidak memiliki loop percobaan ulang internal; klien
mengembalikan semua error dari stub langsung ke aplikasi.
Langkah berikutnya
Untuk melihat kode lengkap dari panduan ini, lihat file sumber di repositori google-cloud-rust di GitHub.