Aprende a crear código auxiliar para implementaciones de clientes reales para insertar un objeto simulado para las prueba de unidades. Usar un cliente simulado con las Google Cloud bibliotecas cliente de Rust te permite escribir pruebas de unidades controladas y confiables que no realizan llamadas de red ni generan cargos de facturación.
Dependencias
Hay varios frameworks de simulación disponibles para Rust. En esta guía, se usa
mockall. Agrégalo como una dependencia de desarrollo:
cargo add --dev mockall
Además, en esta guía, se usa el Speech cliente para que los
ejemplos sean más fáciles de seguir (pero estos conceptos se aplican a todos los clientes).
Agrega las dependencias requeridas a tu archivo Cargo.toml:
cargo add google-cloud-speech-v2 google-cloud-lro
Simula un cliente
Para probar tu código con un cliente simulado, define una estructura simulada, configura su comportamiento esperado para tu situación de prueba y, luego, inserta esa simulación en la lógica de tu aplicación. En el siguiente ejemplo, se muestra este flujo de trabajo.
Primero, agrega instrucciones use para simplificar el código:
Supongamos que la aplicación tiene una función que usa el cliente Speech para llamar a GetRecognizer, configurar el campo name de la solicitud y procesar la respuesta del servidor.
Puedes probar cómo la aplicación controla diferentes respuestas del servicio.
Luego, define la estructura simulada. Esta estructura implementa el
speech::stub::Speech rasgo.
Crea una instancia de la simulación. Ten en cuenta que la
mockall::mock! macro antepone un Mock prefijo al nombre de la
estructura definida anteriormente.
Establece expectativas sobre la simulación. Por ejemplo, espera que el código llame a GetRecognizer con un nombre en particular y simule una respuesta exitosa del servicio.
Crea un cliente Speech con la simulación:
Llama a la función:
Verifica los resultados:
Simula errores
Simular errores es similar a simular éxitos. Para simular un error, modifica el resultado que muestra la simulación.
Un cliente compilado con from_stub() no tiene un bucle de reintento interno; muestra todos los errores del código auxiliar directamente a la aplicación.
Próximos pasos
Para ver el código completo de esta guía, consulta el archivo fuente en el google-cloud-rust repositorio en GitHub.