首頁 >後端開發 >Golang >在 App Engine 單元測試中使用 Go 範本時如何解決「沒有這樣的檔案或目錄」錯誤?

在 App Engine 單元測試中使用 Go 範本時如何解決「沒有這樣的檔案或目錄」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-01 09:04:12575瀏覽

How to Resolve

如何透過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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn