Inicio Blog Pruebas unitarias y gestión de errores en servicios web de API REST

Pruebas unitarias y gestión de errores en servicios web de API REST

Kulvir Kaila | 15 de mayo de 2023

Pruebas unitarias y gestión de errores en servicios web de API REST

Introducción

Como parte del grupo de desarrolladores MVP de Acumatica, el grupo ha compartido información valiosa. Se ha debatido mucho sobre las pruebas unitarias de personalizaciones en la plataforma Acumatica y la API REST. La construcción de marcos de pruebas en soluciones requiere una disciplina que es necesaria para construir soluciones exitosas. En este post, voy a discutir cómo aprovecho las pruebas unitarias con llamadas a la API REST donde tengo que dar al usuario información sobre los errores.

Una herramienta valiosa mencionada por nuestros compañeros desarrolladores MVP de Acumatica fue el uso de XUnit como una valiosa herramienta de pruebas unitarias de código abierto para .NET Framework dentro de Visual Studio.

Xunit

Xunit nos ha permitido probar con confianza fragmentos más pequeños de código que son la ruta crítica en nuestras integraciones y mejorar la eficiencia en la entrega de estas soluciones en un plazo más fiable. Una vez creado el proyecto XUnit, es valioso utilizarlo para solucionar problemas en esas mismas secciones de código. Para empezar a utilizar el proyecto, puede encontrarlo en la sección de plantillas de su entorno de Visual Studio. Una vez creado el proyecto, asegúrese de hacer referencia a la biblioteca que necesita probar en su proyecto de pruebas unitarias.

Pruebas unitarias y gestión de errores en servicios web de API REST

Cuando empecé a usar la herramienta de pruebas unitarias, dependía de añadir todas mis credenciales a un archivo appSettings.json con conexiones a varios clientes. Idealmente, usted no desea guardar esta información en este archivo y recomienda encarecidamente moverlo a un archivo de Secretos de Usuario. Visual Studio ahora hace esto bastante fácil simplemente haciendo clic derecho en el proyecto para acceder a esto. El archivo de secretos de usuario permanece en su entorno de desarrollo local y no se empuja hasta su repositorio local de Github (o equivalente).

Pruebas unitarias y gestión de errores en servicios web de API REST

Para cada clase de unidad que cree, asegúrese de realizar la conexión en el constructor de la clase para evitar crear una nueva conexión para cada prueba de unidad. También tenga en cuenta el uso de secretos de usuario en el objeto de configuración. Asegúrese de incluir el paquete NuGet Microsoft.Extensions.Configuration.UserSecrets junto con Microsoft.Extensions.Configuration y los paquetes relacionados para aprovechar esta característica.

GIST: https://gist.github.com/kulvirTAC/c1c64f4dde29f20f3f0c0d465f5d2184

Pruebas unitarias y gestión de errores en servicios web de API REST

Al implementar soluciones API, la gestión de errores se convierte en un factor clave para ayudar a nuestros usuarios finales a saber cuándo se estropean las integraciones. Un manejo de errores defectuoso o la falta de información pueden causar mucho tiempo innecesario dedicado a la solución de problemas. Una de las pruebas de nuestro proyecto de pruebas unitarias consiste en comprobar si falta un artículo de inventario en Acumatica. El pequeño fragmento de código describe la prueba.

GIST: https://gist.github.com/kulvirTAC/b5b9b5a11a46930f5a158e24245870f8

El error devuelto por este código a través de la API REST de Acumatica muestra lo siguiente. Para mayor claridad, he eliminado los campos en blanco o no relevantes de la carga útil. En el nivel superior, el mensaje de error indica lo siguiente Falta la conversión de unidades. Se trata de una declaración de error engañosa y tendremos que recorrer el resto del código para encontrar los detalles detrás de este error.

GIST: https://gist.github.com/kulvirTAC/005cd15ecb8042efa2b79105497ffe15

A nivel de detalle, encontramos las siguientes etiquetas de error en la carga JSON. Una vez más, los datos se reducen únicamente a las partes relevantes:

GIST: https://gist.github.com/kulvirTAC/efe804d350959683085961d6918296ba

A medida que recopilamos las etiquetas de error en la carga útil, podemos devolver un mensaje más informativo para nuestros clientes:

Falta la conversión de unidades.; Falta la conversión de unidades.
Details.InventoryID: 'Inventory ID' no puede estar vacío.
Details.UOM: 'UOM' no puede estar vacío.

 

Si hay varias líneas en los pedidos, tendremos que descifrar qué ID de inventario faltaba realmente. La API REST de Acumatica hace un buen trabajo devolviendo los datos completos del pedido donde las líneas restantes se muestran en un formato válido. Este es solo un ejemplo de cómo puede aprovechar las herramientas de pruebas unitarias del mercado con sus personalizaciones de Acumatica.

Resumen

Añadir pruebas unitarias a tus soluciones te permite resolver situaciones mucho más rápido que intentar reproducir todos los pasos intermedios cuando ejecutas el proyecto completo. Cualquier actualización del código permite realizar pruebas de regresión de la funcionalidad básica. En algunos casos, se puede adoptar un enfoque de desarrollo basado en pruebas para mejorar aún más la calidad del código. A mí me resulta especialmente útil cuando necesito mejorar la gestión de errores en proyectos de integración.

¡Feliz codificación!

Autor del blog

Como Director de Desarrollo de Software en el Grupo de Soluciones en la Nube de The Answer Company, Kulvir crea estrategias de desarrollo para clientes con soluciones en la nube. En una carrera que abarca más de dos décadas en el sector tecnológico y 13 años en el ámbito de los ERP, ha ocupado puestos como arquitecto de soluciones, ingeniero de software y director de entrega en múltiples empresas de software. Con una licenciatura en Ciencias de la Computación por la Universidad Simon Fraser, así como sólidos conocimientos en desarrollo de software, Kulvir está especializado en diagnosticar los puntos débiles de las empresas y dirigir el diseño de productos para ofrecer la solución óptima que fortalezca los negocios de nuestros clientes. También disfruta estableciendo relaciones a largo plazo con los clientes y manteniéndose al día de las últimas tecnologías. En su tiempo libre, Kulvir disfruta jugando al golf, entrenando y jugando al hockey.

Reciba las actualizaciones del blog en su bandeja de entrada.