使用自訂路徑測試App Engine 範本
在App Engine 上使用範本套件和Go 時,您可能會遇到檔案解析問題在單元測試期間。單元測試失敗,錯誤“open templates/index.html: no such file or directory”,表示伺服器無法定位模板檔案。
解決這個問題的方法在於理解應用程式根目錄(app.yaml 所在的位置)和執行單元測試時的目前目錄。單元測試通常在包含 *_test.go 檔案的資料夾中執行,該資料夾不是應用程式根目錄。在正常應用執行期間正常工作的相對檔案路徑在執行測試時將無法正確解析。
要解決此問題,您可以:
1.將工作目錄變更為應用程式根目錄:
使用os.Chdir()導航到測試檔案中的應用程式根目錄,通常比測試檔案位置高2 級。例如:
func init() { if err := os.Chdir("../.."); err != nil { panic(err) } }
請注意,這必須在 init() 函數中完成或在測試方法中明確呼叫。
2.重構程式碼:
重構程式碼以將應用程式根目錄作為參數或變數傳遞,而不是使用相對檔案路徑。這允許您在單元測試期間獨立於當前目錄指定相對檔案解析的基本路徑。
// Package scope variable for passing the app root var appRoot string func pageIndex(w http.ResponseWriter, r *http.Request) { tpls := append([]string{"templates/index.html"}, templates...) tpl := template.Must(template.ParseFiles(append([]string{appRoot}, tpls...)...)) // ... } // Function to initialize the app root before running tests func TestMain(m *testing.M) { // Set appRoot to the absolute path of the app root appRoot = "../.." // ... os.Exit(m.Run()) }
以上是使用自訂路徑對 App Engine 範本進行單元測試時如何解決「沒有這樣的檔案或目錄」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!