首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Martini模板和测试

Martini模板和测试
EN

Stack Overflow用户
提问于 2014-11-09 12:10:19
回答 1查看 224关注 0票数 2

我正在尝试将我的应用程序文件从测试文件中分离出来。它看起来像这样:

代码语言:javascript
复制
main.go
views/
  layouts/
    layout.html
spec/
  main_test.go

main.go创建了一个马提尼应用程序,并告诉Martini.render在哪里寻找视图:

代码语言:javascript
复制
func CreateApplication() {
  m := martini.Classic()
  m.Use(render.Renderer(render.Options{
    Directory: "views",
    Layout: "layouts/layout",
    Extensions: []string{".html"},
  }))
}

当我从根文件夹使用go run时,这一切都运行得很好。但是,当我尝试使用spec/main_test.go文件中的CreateApplication()函数时,它现在正在查找spec/views中的视图,因为那是run文件夹。

我尝试使用runtime.Caller()来获取绝对路径,但在编译二进制文件时,这完全搞砸了。

我想我的问题是我如何才能做到这一点?我希望无论从哪里调用CreateApplication(),它都能以相同的方式工作。

EN

回答 1

Stack Overflow用户

发布于 2014-11-14 17:06:07

我经常遇到这个问题。在这种情况下,我要做的是创建一个从子目录到根目录中包含模板的文件夹的符号链接。到目前为止,我在使用这个appraoch时还没有遇到任何问题,但是当一个应用程序投入生产时,我会删除那些符号链接。我实际上有一个脚本,它在我开始测试之前创建符号链接,然后在测试完成后删除它们。

在你的例子中,它看起来像这样(我在Ubuntu或Cygwin上):

代码语言:javascript
复制
main.go
views/
  layouts/
    layout.html
spec/
  main_test.go

$ cd spec
$ ln -s ../views views

main.go
views/
  layouts/
    layout.html
spec/
  main_test.go
  views <- this is the symlink

现在,当从spec/运行您的测试时,可以找到视图目录。我希望它能帮助你,如果我的方法有什么缺陷,我很想知道!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26824917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档