Cara Menentukan Laluan Templat untuk Enjin Apl dengan Ujian Unit Go
Apabila menggunakan pakej templat terbina dalam dalam Enjin Aplikasi Go, menentukan laluan ke fail templat boleh mencabar semasa ujian unit. Semasa laluan berfungsi semasa pembangunan tempatan, menjalankan ujian unit sering menyebabkan ralat "panik: buka [laluan templat]: tiada fail atau direktori sedemikian."
Isu ini timbul kerana direktori kerja semasa ujian unit berbeza daripada bahawa apabila menjalankan aplikasi. Dalam mod pembangunan, direktori semasa ialah akar aplikasi, membenarkan laluan relatif diselesaikan dengan betul. Walau bagaimanapun, semasa ujian unit, direktori semasa bertukar kepada folder yang mengandungi fail ujian, menyebabkan laluan relatif gagal.
Untuk menangani masalah ini, terdapat dua pilihan utama:
1. Tukar Direktori Kerja kepada App Root
Sebelum melaksanakan kod yang menggunakan laluan relatif, tetapkan direktori kerja kepada folder akar apl menggunakan os.Chdir(). Contohnya:
if err := os.Chdir("../.."); err != nil { panic(err) }
Sebagai alternatif, ini boleh dilakukan dalam fungsi init() dalam fail ujian untuk memastikan ia dilaksanakan sebelum sebarang kaedah ujian.
2. Kod Refactor
Untuk kod yang menggunakan laluan relatif, ubah suainya untuk menerima parameter bagi laluan asas laluan relatif. Laluan asas ini boleh ditetapkan secara berbeza apabila menjalankan ujian unit, membolehkan laluan relatif diselesaikan dengan betul. Contohnya:
base := "" // Set to "" when running normally and to app root when testing tplPaths := append([]string{"templates/index.html"}, templates...)
Dengan menggabungkan salah satu daripada teknik ini, anda boleh memastikan bahawa laluan templat diselesaikan dengan betul semasa ujian unit, membolehkan anda menguji kod anda dengan berkesan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'tiada fail atau direktori sedemikian\' Semasa Menggunakan Templat Go dalam Ujian Unit Enjin Apl?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!