如何透過Go 單元測試為App Engine 指定範本路徑
在App Engine 上使用Go 中的內建範本包時,在單元測試期間指定模板檔案的路徑可能具有挑戰性。雖然該路徑在本地開發期間有效,但運行單元測試通常會導致錯誤“panic: open [template path]: no such file or directory。”
出現此問題的原因是單元測試期間的工作目錄與運行應用程式時。在開發模式下,目前目錄是應用程式根目錄,允許正確解析相對路徑。然而,在單元測試時,目前目錄切換到包含測試檔案的資料夾,導致相對路徑失敗。
要解決這個問題,主要有兩個選項:
1.將工作目錄更改為應用程式根目錄
在執行中使用相對路徑的程式碼之前,使用os.Chdir() 將工作目錄設定為應用程式的根資料夾。例如:
if err := os.Chdir("../.."); err != nil { panic(err) }
或者,這可以在測試檔案中的 init() 函數中完成,以確保它在任何測試方法之前執行。
2.重構程式碼
對於使用相對路徑的程式碼,修改它以接受相對路徑的基本路徑的參數。執行單元測試時可以不同地設定此基本路徑,從而可以正確解析相對路徑。例如:
base := "" // Set to "" when running normally and to app root when testing tplPaths := append([]string{"templates/index.html"}, templates...)
透過結合其中一種技術,您可以確保在單元測試期間正確解析模板路徑,從而使您能夠有效地測試程式碼。
以上是在 App Engine 單元測試中使用 Go 範本時如何解決「沒有這樣的檔案或目錄」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!