So geben Sie den Vorlagenpfad für App Engine mit Go Unit Testing an
Wenn Sie das integrierte Vorlagenpaket in Go in App Engine verwenden, Die Angabe des Pfads zu Vorlagendateien kann beim Unit-Testen eine Herausforderung sein. Während der Pfad während der lokalen Entwicklung funktioniert, führt die Ausführung von Unit-Tests häufig zu der Fehlermeldung „Panik: [Vorlagenpfad] öffnen: keine solche Datei oder kein solches Verzeichnis.“
Dieses Problem tritt auf, weil das Arbeitsverzeichnis während des Unit-Tests abweicht das beim Ausführen der App. Im Entwicklungsmodus ist das aktuelle Verzeichnis das App-Stammverzeichnis, sodass relative Pfade korrekt aufgelöst werden können. Während des Komponententests wechselt das aktuelle Verzeichnis jedoch zu dem Ordner, der die Testdatei enthält, was dazu führt, dass relative Pfade fehlschlagen.
Um dieses Problem zu beheben, gibt es zwei Hauptoptionen:
1. Ändern Sie das Arbeitsverzeichnis in den Stammordner der App
Bevor Sie Code ausführen, der relative Pfade verwendet, legen Sie das Arbeitsverzeichnis mit os.Chdir() auf den Stammordner der App fest. Zum Beispiel:
if err := os.Chdir("../.."); err != nil { panic(err) }
Alternativ kann dies in einer init()-Funktion innerhalb der Testdatei erfolgen, um sicherzustellen, dass sie vor allen Testmethoden ausgeführt wird.
2. Refactor-Code
Ändern Sie Code, der relative Pfade verwendet, so, dass er einen Parameter für den Basispfad des relativen Pfads akzeptiert. Dieser Basispfad kann beim Ausführen von Komponententests unterschiedlich festgelegt werden, sodass der relative Pfad korrekt aufgelöst werden kann. Zum Beispiel:
base := "" // Set to "" when running normally and to app root when testing tplPaths := append([]string{"templates/index.html"}, templates...)
Durch die Integration einer dieser Techniken können Sie sicherstellen, dass Vorlagenpfade während des Komponententests korrekt aufgelöst werden, sodass Sie Ihren Code effektiv testen können.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Keine solche Datei oder kein solches Verzeichnis' bei der Verwendung von Go-Vorlagen in App Engine-Komponententests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!