Introducción
Como parte del grupo de desarrolladores MVP de Acumatica, se ha compartido información valiosa entre los miembros. Ha habido mucha discusión sobre la personalización de las pruebas unitarias en la plataforma Acumatica y la API REST. La creación de marcos de prueba para soluciones requiere una disciplina necesaria para construir soluciones exitosas. En esta publicación, discutiré cómo aprovecho las pruebas unitarias con llamadas a la API REST cuando necesito proporcionar al usuario retroalimentación sobre errores.
Una herramienta valiosa mencionada por nuestros colegas desarrolladores MVP de Acumatica fue el uso de XUnit como una valiosa herramienta de pruebas unitarias de código abierto para el .NET Framework dentro de Visual Studio.
Xunit
Xunit nos ha permitido probar con confianza fragmentos de código más pequeños 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 que se ha creado el proyecto XUnit, es valioso usarlo al solucionar problemas en esas mismas secciones de código. Para empezar a usar 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 prueba unitaria.

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, no querrá guardar esta información en este archivo y se recomienda encarecidamente moverla a un archivo de secretos de usuario (User Secrets). Visual Studio ahora facilita esto simplemente haciendo clic derecho en el proyecto para acceder a él. El archivo de secretos de usuario permanece en su entorno de desarrollo local y no se sube a su repositorio local de Github (o equivalente).

Para cada clase unitaria que cree, asegúrese de establecer la conexión en el constructor de la clase para evitar crear una nueva conexión para cada prueba unitaria. Tenga en cuenta también 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 paquetes relacionados para aprovechar esta característica.
GIST: https://gist.github.com/kulvirTAC/c1c64f4dde29f20f3f0c0d465f5d2184

Al implementar soluciones API, el manejo de errores se convierte en un factor clave para ayudar a nuestros usuarios finales a saber cuándo fallan las integraciones. Un manejo de errores defectuoso o la falta de información pueden causar mucho tiempo innecesario dedicado a la resolución de problemas. Una prueba en nuestro proyecto de pruebas unitarias es verificar 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, eliminé los campos en blanco o no relevantes de la carga útil. En el nivel superior, el mensaje de error indica que la conversión de unidades falta. Esta es 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 útil JSON. Una vez más, los datos se han reducido solo 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 a nuestros clientes:
La conversión de unidades falta.; La conversión de unidades falta. Details.InventoryID: 'ID de inventario' 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 al devolver 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 disponibles en el mercado con sus personalizaciones de Acumatica.
Resumen
Añadir pruebas unitarias a sus soluciones le permite solucionar problemas mucho más rápido que intentar reproducir todos los pasos intermedios al ejecutar el proyecto completo. Cualquier actualización del código le permite realizar pruebas de regresión de la funcionalidad base. En algunos casos, se puede adoptar un enfoque de desarrollo basado en pruebas para mejorar aún más la calidad del código. Me resulta particularmente útil cuando necesito mejorar el manejo de errores para proyectos de integración.
¡Feliz codificación!
