Benim şu anki dizin yapısı aşağıdaki gibidir:Git: template.ParseFiles için şablon dosya belirtme
App
- Template
- foo.go
- foo.tmpl
- Model
- bar.go
- Another
- Directory
- baz.go
dosya foo.go
init
sırasında şablon dosyasında okumak için ParseFiles
kullanır.
import "text/template"
var qTemplate *template.Template
func init() {
qTemplate = template.Must(template.New("temp").ParseFiles("foo.tmpl"))
}
...
foo.go
için birim testleri beklendiği gibi çalışır. Ancak, bar.go
ve baz.go
için her ikisi de foo.go
'u aldığım ve foo.tmpl
'u açmaya çalışırken panik aldığım için birim testleri çalıştırmaya çalışıyorum.
/App/Model$ go test
panic: open foo.tmpl: no such file or directory
/App/Another/Directory$ go test
panic: open foo.tmpl: no such file or directory
Bir göreli dizin olarak (" ./foo.tmpl "), tam bir dizin (şablon adı belirterek denedim" ~/go/src/github.com/Uygulama/Şablon/foo. tmpl "), bir uygulama göreli dizini (" /App/Template/foo.tmpl ") ve diğerleri ancak hiçbir şey her iki durumda da işe yaramaz. Birim testleri ya bar.go
ya da baz.go
(ya da her ikisi) için başarısız.
Şablon dosyam nerede yerleştirmeli ve ParseFiles
numaralı telefonu nasıl arayayım? Bu nedenle, şablon dosyasını her zaman go test
olarak adlandırdığım dizinden bağımsız olarak bulabilirim?
sen ne yapmaya çalışıyorsun ne açık bir örneğini gönderebilir miyim? 'Model' den ParseFiles ("../ Template/foo.tmpl") 'i denedim ve gayet iyi çalışıyor. – creack
Ama daha derin bir dizinde 'go test 'çalıştırmaya çalışırsam, artık tekrar çalışmayacak. Anlayabildiğim kadarıyla, "git testi" her zaman geçerli çalışma dizinini ayarlar ve sonra ParseFiles, bunu "ParseFiles" olarak adlandırılan dosyaya göre değil, şablon bulmak için temel dizin olarak kullanır. Bu çok kırılgan, bu yüzden yanlış bir şey yapmam gerektiğini düşünüyorum. – Bill
Çalıştığım sorunu göstermek için sorumu güncelledim. – Bill