如何使用 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 测试文件的主要内容,如果未能解决你的问题,请参考以下文章
beego应用做纯API后端如何使用jwt实现无状态权限验证