Maison > Article > développement back-end > Comment puis-je modifier les constantes dans Go pour des tests efficaces ?
Redéfinir les constantes dans Go pour les tests
Dans le domaine de la programmation Go, les constantes offrent un moyen immuable de stocker des valeurs fixes. Bien que cette rigidité garantisse la stabilité, elle pose un défi lors des tests lorsque l'on a besoin de flexibilité pour modifier ces valeurs. Prenons, par exemple, un scénario dans lequel vous disposez d'un client HTTP qui accède à une API distante. À des fins de test, vous préféreriez utiliser un serveur fictif au lieu d'effectuer de véritables appels d'API.
L'approche simple consisterait à déclarer baseUrl comme variable globale et à modifier sa valeur pendant le test. Cependant, cela présente des inconvénients potentiels, car cela introduit le risque de modifications d’exécution affectant le code de production. Pour maintenir l'intégrité du code, vous souhaiterez peut-être définir baseUrl comme constante pour la production, mais conserver la possibilité de la modifier pour les tests.
Solution : refactorisation avec des paramètres
Le la solution consiste à refactoriser légèrement le code. Au lieu d'utiliser des constantes dans la fonction, introduisez un paramètre qui accepte la valeur baseUrl souhaitée. Cela permet à la fonction d'origine de conserver son API tout en offrant une flexibilité pour les tests.
<code class="go">const baseUrl_ = "http://google.com" func MyFunc() string { // Call other function passing the const value return myFuncImpl(baseUrl_) } func myFuncImpl(baseUrl string) string { // use baseUrl // Same implementation that was in your original MyFunc() function }</code>
Cette approche garantit que l'API de votre bibliothèque reste inchangée. Cependant, il vous permet désormais de tester la fonctionnalité de MyFunc() d'origine en testant myFuncImpl() avec différentes valeurs baseUrl. MyFunc() lui-même n'est pas affecté, car il transmet systématiquement la constante baseUrl_ à myFuncImpl().
Fonction de test exportée ou non exportée
La décision d'exporter ou de désexporter la fonction myFuncImpl() dépend de l'emplacement de votre code de test. S'il réside dans le même package, il peut appeler directement myFuncImpl() sans problème, quel que soit son statut d'exportation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!