Pacchetto google.golang.org/appengine/aetest (v1.6.8)

Il pacchetto aetest fornisce un'API per l'esecuzione di dev_appserver da utilizzare nei test.

Esempio di file di test:

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

La variabile di ambiente APPEngine_DEV_APPSERVER specifica la posizione dell'eseguibile dev_appserver.py da utilizzare. Se il criterio non viene configurato, viene consultato il PATH di sistema.

Variabili

PrepareDevAppserver

var PrepareDevAppserver func() error

PrepareDevAppserver è un hook che, se impostato, viene chiamato prima dell'avvio di dev_appserver.py, ogni volta che viene avviato. Se aetest.NewContext viene richiamato dallo strumento di test goapp, questo hook non è necessario.

Funzioni

accesso funzione

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

Con l'accesso, la Richiesta fornita viene considerata come se fosse stata emessa dall'utente specificato.

funzione Esci

func Logout(req *http.Request)

Quando esci, la Richiesta fornita viene considerata come se fosse stata emessa da un utente che non ha eseguito l'accesso.

funzione NewContext

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

NewContext avvia un'istanza del server API di sviluppo e restituisce un contesto che instrada tutte le chiamate API a quel server, oltre a una chiusura che deve essere chiamata quando il contesto non è più richiesto.

Istanza

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

L'istanza rappresenta un'istanza in esecuzione del server API di sviluppo.

funzione NewInstance

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

NewInstance avvia un'istanza in esecuzione di api_server.py, che può essere utilizzata per più contesti di test che delegano tutte le chiamate API di App Engine a quell'istanza. Se il criterio è nullo, vengono utilizzati i valori predefiniti.

Opzioni

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
}

Le opzioni vengono utilizzate per specificare le opzioni durante la creazione di un'istanza.