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
Lepaskan: 2024-12-04 07:24:15
asal
517 orang telah melayarinya

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)
    }
}
Salin selepas log masuk

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...))
    // ...
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan