Paket google.golang.org/appengine/aetest (Version 1.6.8)

Das Paket aetest bietet eine API zum Ausführen von dev_appserver für die Verwendung in Tests.

Beispiel für eine Testdatei:

package foo_test

import (
    "testing"

    "google.golang.org/appengine/memcache"
    "google.golang.org/appengine/aetest"
)

func TestFoo(t *testing.T) {
    ctx, done, err := aetest.NewContext()
    if err != nil {
        t.Fatal(err)
    }
    defer done()

    it := &memcache.Item{
        Key:   "some-key",
        Value: []byte("some-value"),
    }
    err = memcache.Set(ctx, it)
    if err != nil {
        t.Fatalf("Set err: %v", err)
    }
    it, err = memcache.Get(ctx, "some-key")
    if err != nil {
        t.Fatalf("Get err: %v; want no error", err)
    }
    if g, w := string(it.Value), "some-value" ; g != w {
        t.Errorf("retrieved Item.Value = %q, want %q", g, w)
    }
}

Die Umgebungsvariable APPENGINE_DEV_APPSERVER gibt den Speicherort der ausführbaren Datei "dev_appserver.py" an, die verwendet werden soll. Wenn kein Wert festgelegt ist, wird der PATH des Systems verwendet.

Variablen

PrepareDevAppserver

var PrepareDevAppserver func() error

PrepareDevAppServer ist ein Hook, der, wenn er gesetzt ist, vor jedem Start von dev_appserver.py aufgerufen wird. Wenn aetest.NewContext vom goapp-Testtool aufgerufen wird, ist dieser Hook nicht erforderlich.

Funktionen

func Login

func Login(u *user.User, req *http.Request)

Login bewirkt, dass die bereitgestellte Anfrage so funktioniert, als wäre sie vom angegebenen Nutzer ausgegeben worden.

func Logout

func Logout(req *http.Request)

Logout bewirkt, dass die bereitgestellte Anfrage so funktioniert, als wäre sie von einem abgemeldeten Nutzer ausgegeben worden.

func NewContext

func NewContext() (context.Context, func(), error)

NewContext startet eine Instanz des Entwicklungs-API-Servers und gibt einen Kontext zurück, der alle API-Aufrufe an diesen Server weiterleitet, sowie einen Abschluss, der aufgerufen werden muss, wenn der Kontext nicht mehr benötigt wird.

Instanz

type Instance interface {
	// Close kills the child api_server.py process, releasing its resources.
	io.Closer
	// NewRequest returns an *http.Request associated with this instance.
	NewRequest(method, urlStr string, body io.Reader) (*http.Request, error)
}

Instance stellt eine laufende Instanz des Entwicklungs-API-Servers dar.

func NewInstance

func NewInstance(opts *Options) (Instance, error)

NewInstance startet eine laufende Instanz von api_server.py, die für mehrere Testkontexte verwendet werden kann, die alle App Engine-API-Aufrufe an diese Instanz delegieren. Wenn "opts" null ist, werden Standardwerte verwendet.

Optionen

type Options struct {
	// AppID specifies the App ID to use during tests.
	// By default, "testapp".
	AppID string
	// StronglyConsistentDatastore is whether the local datastore should be
	// strongly consistent. This will diverge from production behaviour.
	StronglyConsistentDatastore bool
	// SupportDatastoreEmulator is whether use Cloud Datastore Emulator or
	// use old SQLite based Datastore backend or use default settings.
	SupportDatastoreEmulator *bool
	// SuppressDevAppServerLog is whether the dev_appserver running in tests
	// should output logs.
	SuppressDevAppServerLog bool
	// StartupTimeout is a duration to wait for instance startup.
	// By default, 15 seconds.
	StartupTimeout time.Duration
}

Options wird verwendet, um Optionen beim Erstellen einer Instanz anzugeben.