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.
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).
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
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!