Pelajari cara membuat stub implementasi klien sebenarnya untuk menyuntikkan mock untuk pengujian unit. Menggunakan klien mock 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 mocking yang tersedia untuk Rust. Panduan ini menggunakan
mockall. Tambahkan sebagai dependensi pengembangan:
cargo add --dev mockall
Selain itu, panduan ini menggunakan klien Speech untuk memudahkan
contoh diikuti (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
Membuat mock klien
Untuk menguji kode Anda dengan klien mock, Anda menentukan struct mock, mengonfigurasi perilaku yang diharapkan untuk skenario pengujian, lalu menyuntikkan mock tersebut ke dalam logika aplikasi Anda. 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 struct mock. Struct ini mengimplementasikan the
speech::stub::Speech trait.
Buat instance mock. Perhatikan bahwa makro
mockall::mock! menambahkan awalan Mock ke nama struct yang
ditentukan sebelumnya.
Tetapkan ekspektasi pada mock. Misalnya, harapkan kode untuk memanggil GetRecognizer dengan nama tertentu dan simulasikan respons yang berhasil dari layanan.
Buat klien Speech menggunakan mock:
Memanggil fungsi:
Verifikasi hasilnya:
Menyimulasikan error
Menyimulasikan error mirip dengan menyimulasikan keberhasilan. Untuk menyimulasikan error, ubah hasil yang ditampilkan oleh mock.
Klien yang dibuat dengan from_stub() tidak memiliki loop coba lagi internal; klien ini menampilkan 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.