Accueil Blog Tests unitaires et gestion des erreurs dans les services Web de l'API REST

Tests unitaires et gestion des erreurs dans les services Web de l'API REST

Kulvir Kaila | 15 mai 2023

Tests unitaires et gestion des erreurs dans les services Web de l'API REST

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.

Tests unitaires et gestion des erreurs dans les services Web de l'API REST

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

Tests unitaires et gestion des erreurs dans les services Web de l'API REST

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

Tests unitaires et gestion des erreurs dans les services Web de l'API REST

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 !

Auteur du blog

En tant que responsable du développement logiciel au sein du groupe Cloud Solutions de The Answer Company, Kulvir élabore des stratégies de développement pour les clients ayant des solutions dans le nuage. Au cours d'une carrière de plus de vingt ans dans l'industrie technologique et de treize ans dans le domaine de l'ERP, il a occupé des postes d'architecte de solutions, d'ingénieur logiciel et de responsable de la livraison dans plusieurs sociétés de logiciels. Titulaire d'une licence en informatique de l'Université Simon Fraser, ainsi que de solides connaissances en développement de logiciels, Kulvir est spécialisé dans le diagnostic des points problématiques de l'entreprise et dans la conception de produits afin de fournir la solution optimale pour renforcer les activités de nos clients. Il aime également établir des relations à long terme avec les clients et se tenir au courant des dernières technologies. Pendant son temps libre, Kulvir aime jouer au golf, entraîner et jouer au hockey.

Recevez les mises à jour du blog dans votre boîte de réception.