Моя текущая структура каталогов выглядит следующим образом:
App
- Template
- foo.go
- foo.tmpl
- Model
- bar.go
- Another
- Directory
- baz.go
В файле foo.go
используется ParseFiles
для чтения в файле шаблона во время init
.
import "text/template"
var qTemplate *template.Template
func init() {
qTemplate = template.Must(template.New("temp").ParseFiles("foo.tmpl"))
}
...
Ед. тесты для foo.go
работают должным образом. Тем не менее, теперь я пытаюсь запустить модульные тесты для bar.go
и baz.go
, которые импортируют foo.go
, и я получаю панику при попытке открыть 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
Я попытался указать имя шаблона как относительный каталог ( "./foo.tmpl" ), полный каталог ( "~/go/src/github.com/App/Template/foo.tmpl" ), относительный каталог приложений ( "/App/Template/foo.tmpl" ) и другие, но ничего не работает для обоих случаев. Единичные тесты не работают либо bar.go
, либо baz.go
(или оба).
Где должен быть размещен файл шаблона и как я должен называть ParseFiles
так, чтобы он всегда мог найти файл шаблона независимо от того, в какой директории я вызываю go test
?