首頁 > 後端開發 > Golang > 使用自訂路徑對 App Engine 範本進行單元測試時如何解決「沒有這樣的檔案或目錄」錯誤?

使用自訂路徑對 App Engine 範本進行單元測試時如何解決「沒有這樣的檔案或目錄」錯誤?

Susan Sarandon
發布: 2024-12-03 19:43:09
原創
474 人瀏覽過

How to Resolve

使用自訂路徑測試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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板