Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan \'panic: open templates/index.html: no such file or directory\' Ralat dalam Ujian Unit Enjin Aplikasi Go?

Bagaimana untuk Menyelesaikan \'panic: open templates/index.html: no such file or directory\' Ralat dalam Ujian Unit Enjin Aplikasi Go?

Susan Sarandon
Susan Sarandonasal
2024-12-04 07:24:15529semak imbas

How to Solve

Cara Menentukan Laluan Templat untuk Enjin Apl dengan Ujian Unit Go

Apabila menggunakan Enjin Aplikasi dengan pakej templat terbina dalam Go, ujian unit mungkin menghadapi masalah mencari fail templat. Ini kerana, semasa pembangunan tempatan, pelayan mencari fail templat berbanding dengan akar apl, manakala ujian unit dijalankan dalam direktori yang berbeza.

Isunya

Isu panik ujian unit dengan mesej berikut: "panic: open templates/index.html: no such file or directory." Ini menunjukkan bahawa pelayan tidak dapat mencari fail templat index.html.

Pilihan 1: Tukar Direktori Kerja

Satu pilihan ialah menukar direktori kerja kepada akar apl sebelum memanggil kod yang menggunakan laluan relatif kepada templat. Ini boleh dicapai dengan os.Chdir().

import "os"

func init() {
    if err := os.Chdir("../.."); err != nil {
        panic(err)
    }
}

Pilihan 2: Kod Refactor

Pilihan lain ialah memfaktorkan semula kod yang menggunakan laluan relatif untuk menerima laluan asas. Laluan asas ini boleh ditetapkan kepada akar apl semasa ujian, membenarkan laluan relatif berfungsi dengan betul.

func pageIndex(w http.ResponseWriter, r *http.Request, basePath string) {
    tpls := append([]string{basePath + "/templates/index.html"}, templates...)
    tpl := template.Must(template.ParseFiles(tpls...))
    // ...
}

Dalam ujian unit, laluan asas boleh ditetapkan kepada akar apl, memastikan templat fail boleh didapati.

func TestPageIndex(t *testing.T) {
    inst, _ := aetest.NewInstance(nil)
    //ignoring the errors for brevity
    defer inst.Close()

    req, _ := inst.NewRequest("GET", "/", nil)
    resp := httptest.NewRecorder()
    pageIndex(resp, req, "../..") // Set base path to app root
}

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan \'panic: open templates/index.html: no such file or directory\' Ralat dalam Ujian Unit Enjin Aplikasi Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn