3 Stimmen

Wie man API-Testdateien mit Beego erstellt

Ich habe untenstehende Testdatei:

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)
            })
    })
}

Dann, wenn ich go test tests/*.go ausführe

Bekomme ich:

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

Ich habe Beego mit bee api gebootet und dann den pq Postgres-Treiber für die PG-Datenbank verwendet.

Außerdem weiß ich nicht, warum es nach dem Pfad /hello/tests/conf/app.conf für die Datei app.conf sucht, es sollte nach /hello/conf/app.conf suchen.

Gibt es einen Grund, warum das passiert?

0voto

Edwardr Punkte 2816

PG kann Sie nicht authentifizieren, wahrscheinlich weil es das Passwort nicht in der app.conf Datei finden kann, die es auch nicht finden kann, weil es an der falschen Stelle sucht.

Versuchen Sie, anstelle der komplizierten Methode in Ihrer init() Funktion einen absoluten Pfad zu Ihrer Konfiguration zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X