cấu trúc thư mục hiện tại của tôi trông giống như sau:Go: Chỉ định mẫu tên tập tin cho template.ParseFiles
App
- Template
- foo.go
- foo.tmpl
- Model
- bar.go
- Another
- Directory
- baz.go
File foo.go
sử dụng ParseFiles
để đọc trong file template trong init
.
import "text/template"
var qTemplate *template.Template
func init() {
qTemplate = template.Must(template.New("temp").ParseFiles("foo.tmpl"))
}
...
Kiểm tra đơn vị cho foo.go
hoạt động như mong đợi. Tuy nhiên, tôi hiện đang cố gắng chạy thử nghiệm đơn vị cho bar.go
và baz.go
cả hai đều nhập foo.go
và tôi cảm thấy hoảng sợ khi cố gắng mở foo.tmpl
.
/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
tôi đã cố gắng xác định tên mẫu như một thư mục tương đối (" ./foo.tmpl "), một thư mục đầy đủ (" ~/đi/src/github.com/App/Template/foo. tmpl "), một thư mục tương đối ứng dụng (" /App/Template/foo.tmpl "), và những người khác nhưng không có gì có vẻ làm việc cho cả hai trường hợp. Các thử nghiệm đơn vị không thành công cho bar.go
hoặc baz.go
(hoặc cả hai).
Tệp mẫu của tôi nên được đặt ở đâu và làm cách nào để gọi ParseFiles
để luôn có thể tìm tệp mẫu bất kể thư mục nào tôi gọi là go test
từ?
Bạn có thể gửi một ví dụ rõ ràng về những gì bạn đang cố gắng để làm gì? Tôi đã thử 'ParseFiles (" ../ Template/foo.tmpl ")' từ 'Model' và nó hoạt động tốt. – creack
Nhưng nếu tôi cố chạy 'test test' trong một thư mục sâu hơn, nó không còn hoạt động nữa. Từ những gì tôi có thể tìm, 'go test' luôn đặt thư mục làm việc hiện tại và sau đó' ParseFiles' sử dụng thư mục cơ sở này để tìm các mẫu thay vì nó tương đối với tệp gọi là 'ParseFiles'. Điều này rất mỏng manh nên tôi nghĩ tôi phải làm điều gì đó sai. – Bill
Tôi đã cập nhật câu hỏi của mình để hiển thị sự cố mà tôi đang gặp phải. – Bill