Maison > développement back-end > Golang > Comment redéfinir les constantes dans Go for Testing ?

Comment redéfinir les constantes dans Go for Testing ?

DDD
Libérer: 2024-11-02 11:49:02
original
790 Les gens l'ont consulté

How Can You Redefine Constants in Go for Testing?

Redéfinir les constantes pour les tests dans Go

Dans le code de production, il est souvent souhaitable d'utiliser des constantes pour des valeurs stables comme les URL de base. Cependant, cela peut poser des problèmes lors des tests, car l'implémentation par défaut de const dans Go ne permet pas la réaffectation.

Problème :

Considérez l'extrait de code suivant, qui tente de redéfinir la constante baseUrl dans le fichier de test :

<code class="go">package main

const baseUrl = "http://google.com"

// in main_test.go
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  ...
 }
const baseUrl = ts.URL // throws error: const baseUrl already defined</code>
Copier après la connexion

Ce code échouera avec l'erreur const baseUrl déjà définie, car Go ne permet pas de redéfinir les constantes.

Solution :

Pour activer constantes adaptées aux tests, pensez à refactoriser votre code. Au lieu d'utiliser une constante globale, créez une fonction qui prend la valeur constante comme paramètre :

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

func MyFunc(baseUrl string) {
    // Use baseUrl
}</code>
Copier après la connexion

Dans le fichier de test, vous pouvez redéfinir le paramètre baseUrl sans affecter le code de production :

<code class="go">// in main_test.go
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  ...
 }
myFuncImpl(ts.URL) // Call the function with the test URL</code>
Copier après la connexion

Cette approche vous permet de tester votre code avec différentes valeurs de constante tout en préservant l'implémentation d'origine. La fonction d'origine MyFunc() utilise toujours la valeur constante de production, garantissant la stabilité pour les scénarios non-tests.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal