Introduction
Faisant partie du groupe de développeurs Acumatica MVP, des informations précieuses ont été partagées au sein du groupe. Il y a eu beaucoup de discussions sur les tests unitaires des personnalisations de la plateforme Acumatica et de l'API REST. La mise en place de cadres de test sur les solutions exige une discipline qui est nécessaire pour construire des solutions réussies. Dans ce billet, je vais discuter de la façon dont j'utilise les tests unitaires avec les appels à l'API REST lorsque j'ai besoin de donner à l'utilisateur un retour d'information sur les erreurs.
Un outil précieux mentionné par nos pairs développeurs Acumatica MVP est l'utilisation de XUnit comme étant un outil de test unitaire open source précieux pour le .NET Framework au sein de Visual Studio.
Xunit
Xunit nous a permis de tester en toute confiance de plus petits fragments de code qui constituent le chemin critique de nos intégrations et d'améliorer l'efficacité de la livraison de ces solutions dans un délai plus fiable. Une fois le projet XUnit créé, il est très utile pour dépanner ces mêmes sections de code. Pour commencer à utiliser le projet, vous pouvez le trouver dans la section des modèles de votre environnement Visual Studio. Une fois le projet créé, assurez-vous de référencer la bibliothèque que vous devez tester dans votre projet de test unitaire.
Lorsque j'ai commencé à utiliser l'outil de test unitaire, je devais ajouter toutes mes informations d'identification dans un fichier appSettings.json avec les connexions aux différents clients. Idéalement, vous ne voulez pas sauvegarder ces informations dans ce fichier et vous recommandez fortement de les déplacer dans un fichier User Secrets. Visual Studio rend cela assez facile en faisant simplement un clic droit sur le projet pour y accéder. Le fichier User Secrets reste dans votre environnement de développement local et n'est pas transféré dans votre dépôt local Github (ou équivalent).
Pour chaque classe unitaire que vous créez, veillez à établir la connexion dans le constructeur de la classe afin d'éviter de créer une nouvelle connexion pour chaque test unitaire. Notez également l'utilisation des secrets d'utilisateur dans l'objet de configuration. Veillez à inclure le paquet NuGet Microsoft.Extensions.Configuration.UserSecrets avec Microsoft.Extensions.Configuration et les paquets associés pour tirer parti de cette fonctionnalité.
GIST : https://gist.github.com/kulvirTAC/c1c64f4dde29f20f3f0c0d465f5d2184
Lors de la mise en œuvre de solutions API, la gestion des erreurs devient un facteur clé pour aider les utilisateurs finaux à savoir quand les intégrations sont interrompues. Une mauvaise gestion des erreurs ou un manque d'informations peut entraîner des pertes de temps inutiles en matière de dépannage. L'un des tests de notre projet de test unitaire consiste à vérifier si un article d'inventaire est manquant dans Acumatica. Le petit extrait de code décrit le test.
GIST: https://gist.github.com/kulvirTAC/b5b9b5a11a46930f5a158e24245870f8
L'erreur renvoyée par ce code via l'API REST d'Acumatica est la suivante. Pour plus de clarté, j'ai supprimé les champs vides ou non pertinents de la charge utile. Au niveau supérieur, le message d'erreur indique que La conversion d'unité est manquante. Il s'agit d'un message d'erreur trompeur et nous devrons parcourir le reste du code pour trouver les détails de cette erreur.
GIST: https://gist.github.com/kulvirTAC/005cd15ecb8042efa2b79105497ffe15
Au niveau des détails, nous trouvons les balises d'erreur suivantes dans la charge utile JSON. Là encore, les données sont réduites aux seules parties pertinentes :
GIST: https://gist.github.com/kulvirTAC/efe804d350959683085961d6918296ba
En collectant les balises d'erreur dans la charge utile, nous pouvons alors renvoyer un message plus informatif à nos clients :
La conversion d'unité est manquante ; La conversion d'unité est manquante. Details.InventoryID : 'Inventory ID' ne peut pas être vide. Details.UOM : 'UOM' ne peut pas être vide.
S'il y a plusieurs lignes dans les commandes, nous devrons déchiffrer l'identifiant d'inventaire manquant. L'API REST d'Acumatica fait un bon travail en renvoyant les données complètes de la commande où les lignes restantes sont affichées dans un format valide. Ce n'est qu'un exemple de la façon dont vous pouvez tirer parti des outils de test unitaire disponibles sur le marché pour vos personnalisations Acumatica.
Résumé
L'ajout de tests unitaires à vos solutions vous permet de résoudre des situations beaucoup plus rapidement qu'en essayant de reproduire toutes les étapes intermédiaires lorsque vous exécutez le projet complet. Toute mise à jour du code vous permet de tester la régression de la fonctionnalité de base. Dans certains cas, une approche de développement pilotée par les tests peut être adoptée pour améliorer encore la qualité du code. Je trouve cela particulièrement utile lorsque je dois améliorer la gestion des erreurs pour les projets d'intégration.
Bon codage !