Comment spécifier le chemin du modèle pour App Engine avec les tests unitaires Go
Lors de l'utilisation du package de modèles intégré dans Go sur App Engine, spécifier le chemin d'accès aux fichiers modèles peut être difficile lors des tests unitaires. Bien que le chemin fonctionne pendant le développement local, l'exécution de tests unitaires entraîne souvent l'erreur "panique : ouvrez [chemin du modèle] : aucun fichier ou répertoire de ce type."
Ce problème se produit car le répertoire de travail pendant les tests unitaires diffère de cela lors de l'exécution de l'application. En mode développement, le répertoire courant est la racine de l'application, ce qui permet de résoudre correctement les chemins relatifs. Cependant, lors des tests unitaires, le répertoire actuel bascule vers le dossier contenant le fichier de test, provoquant l'échec des chemins relatifs.
Pour résoudre ce problème, il existe deux options principales :
1. Remplacez le répertoire de travail par la racine de l'application
Avant d'exécuter du code qui utilise des chemins relatifs, définissez le répertoire de travail sur le dossier racine de l'application à l'aide de os.Chdir(). Par exemple :
if err := os.Chdir("../.."); err != nil { panic(err) }
Alternativement, cela peut être fait dans une fonction init() dans le fichier de test pour garantir qu'il est exécuté avant toute méthode de test.
2. Refactor Code
Pour le code utilisant des chemins relatifs, modifiez-le pour accepter un paramètre pour le chemin de base du chemin relatif. Ce chemin de base peut être défini différemment lors de l'exécution de tests unitaires, permettant au chemin relatif d'être correctement résolu. Par exemple :
base := "" // Set to "" when running normally and to app root when testing tplPaths := append([]string{"templates/index.html"}, templates...)
En incorporant l'une de ces techniques, vous pouvez vous assurer que les chemins des modèles sont correctement résolus lors des tests unitaires, vous permettant ainsi de tester efficacement votre code.
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!