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!