如何使用 Beego 制作 API 测试文件

Posted

技术标签:

【中文标题】如何使用 Beego 制作 API 测试文件【英文标题】:How to make API test files with Beego 【发布时间】:2015-03-12 16:09:39 【问题描述】:

我有以下测试文件:

package tests

import (
    "net/http"
    "net/http/httptest"
    "testing"
    "runtime"
    "path/filepath"
    _ "hello/routers"
    _ "github.com/lib/pq"

    "github.com/astaxie/beego"
    . "github.com/smartystreets/goconvey/convey"
)

func init() 
    _, file, _, _ := runtime.Caller(1)
    apppath, _ := filepath.Abs(filepath.Dir(filepath.Join(file, ".." + string(filepath.Separator))))
    beego.TestBeegoInit(apppath)


// TestGet is a sample to run an endpoint test
func TestGet(t *testing.T) 
    r, _ := http.NewRequest("GET", "/api/testing", nil)
    w := httptest.NewRecorder()
    beego.BeeApp.Handlers.ServeHTTP(w, r)

    beego.Trace("testing", "TestGet", "Code[%d]\n%s", w.Code, w.Body.String())

    Convey("Subject: Test Station Endpoint\n", t, func() 
            Convey("Status Code Should Be 200", func() 
                    So(w.Code, ShouldEqual, 200)
            )
            Convey("The Result Should Not Be Empty", func() 
                    So(w.Body.Len(), ShouldBeGreaterThan, 0)
            )
    )

然后当我运行go test tests/*.go

我明白了:

2015/01/14 23:55:19 [config.go:284] [W] open /home/IdeaProjects/go/src/hello/tests/conf/app.conf: no such file or directory 
[ORM]register db Ping `default`, pq: password authentication failed for user "hello"
must have one register DataBase alias named `default`
FAIL    command-line-arguments  0.008s

我已经使用bee api 引导 Beego,然后使用 pq Postgres 驱动程序用于 PG 数据库。

我也不确定它为什么要查找 /hello/tests/conf/app.conf 路径的 app.conf 文件,它应该查找 /hello/conf/app.conf

发生这种情况有什么原因吗?

【问题讨论】:

您好,您了解测试的情况吗?我有一个类似的问题,我的应用程序路由没有被拾取。编辑:发现我需要在测试中导入我的路由包来获取它们...... doh 我面临同样的问题,它试图在测试中找到 conf 而不是项目。你找到解决方案了吗@Passionate Developer 【参考方案1】:

PG 无法验证您的身份,可能是因为它在app.conf 文件中找不到密码,它也找不到密码,因为它找错了地方。

尝试使用配置的绝对路径,而不是 init() 函数中的复杂方法。

【讨论】:

以上是关于如何使用 Beego 制作 API 测试文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用GoLand调试beego项目

beego应用做纯API后端如何使用jwt实现无状态权限验证

如何使文本文件“打开方式”我的 Win Api 文本编辑器?

如何制作一个 PInvoke 友好的原生 API?

beego默认处理静态文件性能低下的问题

beego如何根据时间查询?