Maison > développement back-end > Golang > le corps du texte

Comment pouvons-nous tester les fonctions Go dépendant de constantes ?

Susan Sarandon
Libérer: 2024-11-01 14:25:29
original
149 Les gens l'ont consulté

How Can We Test Go Functions Dependent on Constants?

Redéfinir les constantes dans Go pour les tests

Aperçu du problème :
Dans Go, les constantes fournissent des valeurs immuables qui ne peut être modifié après déclaration. Cependant, lors du test d'un code qui repose sur ces constantes, il devient difficile d'injecter différentes valeurs à des fins de test.

Solution proposée :
Une solution potentielle réside dans la refactorisation du code pour inclure une deuxième fonction qui prend l'URL de base comme paramètre et appelle la fonction d'origine avec la valeur constante comme argument.

Implémentation Détails :

  1. Introduire une fonction d'assistance :

    • Remplacer la constante baseUrl_ par une fonction qui accepte le URL de base en tant que argument :

      <code class="go">func myFuncImpl(baseUrl string) string {
        // Use `baseUrl` in the function
      }</code>
      Copier après la connexion
  2. Modifier la fonction d'origine :

    • Avoir la fonction d'origine (MyFunc()) appelle l'assistant fonction :

      <code class="go">func MyFunc() string {
        return myFuncImpl(baseUrl_)
      }</code>
      Copier après la connexion
  3. Préserver la constante :

    • Conserver la constante baseUrl_ comme point de référence dans la fonction MyFunc(), garantissant que la valeur constante prévue est utilisée en production code.

Avantages :

  • Maintient l'API d'origine et évite les vulnérabilités potentielles dans le code de production.
  • Permet de tester la fonction MyFunc() avec différentes valeurs sans modifier le constante.
  • Les tests peuvent accéder à une fonction dédiée (myFuncImpl()) qui permet une attribution de valeur flexible pendant les tests.

Exemple :

<code class="go">const baseUrl_ = "http://google.com"

func MyFunc() string {
    return myFuncImpl(baseUrl_)
}</code>
Copier après la connexion

Dans le code de test, myFuncImpl() peut être appelé directement et attribuer des valeurs personnalisées pour URL de base :

<code class="go">func TestMyFunc(t *testing.T) {
    result := myFuncImpl("http://example.org")
    // Assertions and tests
}</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!