Introduction
Faisant partie du groupe de développeurs Acumatica MVP, des informations précieuses ont été partagées entre le groupe. Il y a eu beaucoup de discussions sur les personnalisations des tests unitaires sur la plate-forme Acumatica et l’API REST. L’élaboration de cadres de test sur les solutions nécessite une discipline qui est nécessaire pour construire des solutions réussies. Dans cet article, je discuterai de la façon dont je tire parti des tests unitaires avec les appels d’API REST où je dois donner à l’utilisateur des commentaires sur les erreurs.
Un outil précieux mentionné par nos pairs développeurs Acumatica MVP était l’utilisation de XUnit comme étant un outil de test unitaire open source précieux pour le .NET Framework dans Visual Studio.
Xunit
Xunit nous a permis de tester en toute confiance de plus petits fragments de code qui est le chemin critique dans nos intégrations et d’améliorer l’efficacité dans la fourniture de ces solutions dans un délai plus fiable. Une fois le projet XUnit créé, il est utile de l’utiliser lors du dépannage de ces mêmes sections de code. Pour commencer à utiliser le projet, vous pouvez le trouver dans la section modèle 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 comptais sur l’ajout de toutes mes informations d’identification à un fichier appSettings.json avec des connexions à divers clients. Idéalement, vous ne souhaitez pas enregistrer ces informations dans ce fichier et vous recommandez fortement de les déplacer vers un fichier de secrets utilisateur. Visual Studio rend maintenant cela assez facile en cliquant simplement avec le bouton droit sur le projet pour y accéder. Le fichier de secrets d’utilisateur reste sur votre environnement de développement local et n’est pas poussé vers votre dépôt Github local (ou équivalent).
Pour chaque classe d’unités que vous créez, veillez à établir la connexion dans le constructeur de la classe pour éviter de créer une nouvelle connexion pour chaque test unitaire. Notez également l’utilisation de secrets utilisateur dans l’objet de configuration. Veillez à inclure le package Microsoft.Extensions.Configuration.UserSecrets NuGet ainsi que Microsoft.Extensions.Configuration et les packages 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 nos utilisateurs finaux à savoir quand les intégrations se décomposent. Une mauvaise gestion des erreurs ou un manque d’informations peut entraîner beaucoup de temps inutile consacré au dépannage. Un test dans notre projet de test unitaire est de voir si un article est manquant d’Acumatica. Le petit extrait de code décrit le test.
GIST: https://gist.github.com/kulvirTAC/b5b9b5a11a46930f5a158e24245870f8
L’erreur de retour de ce code via l’API REST d’Acumatica montre ce qui suit. 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’une déclaration d’erreur trompeuse et nous devrons parcourir le reste du code pour trouver les détails derrière cette erreur.
GIST : https://gist.github.com/kulvirTAC/005cd15ecb8042efa2b79105497ffe15
Au niveau du détail, nous trouvons les balises d’erreur suivantes dans la charge utile JSON. Encore une fois, les données sont réduites aux parties pertinentes uniquement:
GIST : https://gist.github.com/kulvirTAC/efe804d350959683085961d6918296ba
Au fur et à mesure que nous collectons les balises d’erreur dans la charge utile, nous pouvons ensuite renvoyer un message plus informatif pour nos clients:
La conversion d’unités est manquante.; La conversion d’unités est manquante.Details.InventoryID: 'Inventory ID' ne peut pas être vide.Details.U/M: 'U/M' ne peut pas être vide.
S’il y a plusieurs lignes dans les commandes, nous devrons déchiffrer quel id d’inventaire était en effet manquant. L’API REST d’Acumatica fait un bon travail en renvoyant les données de commande complètes 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 sur le marché avec vos personnalisations Acumatica.
Résumé
L’ajout de tests unitaires à vos solutions vous permet de résoudre des situations beaucoup plus rapidement que d’essayer de reproduire toutes les étapes intermédiaires lorsque vous exécutez le projet complet. Toute mise à jour du code vous permet de tester la fonctionnalité de base par régression. Dans certains cas, une approche de développement basée sur les tests peut être adoptée pour améliorer davantage la qualité du code. Je trouve particulièrement utile lorsque j’ai besoin d’améliorer la gestion des erreurs pour les projets d’intégration.
Bon codage!