O pacote aetest fornece uma API para executar o dev_appserver em testes.
Veja a seguir um exemplo de arquivo de teste:
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) } }
A variável de ambiente APPENGINE_DEV_APPSERVER especifica o local do executável dev_appserver.py que será usado. Se ela não tiver sido definida, o PATH do sistema será consultado.
Variáveis
PrepareDevAppserver
var PrepareDevAppserver func() error
O PrepareDevAppserver é um gancho chamado antes de cada inicialização do dev_appserver.py, se configurado. Se aetest.NewContext for invocada a partir da ferramenta de teste goapp, esse gancho não será necessário.
Funções
func Login
A função Login faz com que a solicitação fornecida atue como se tivesse sido emitida pelo usuário específico.
func Logout
A função Logout faz com que a solicitação fornecida atue como se tivesse sido emitida por um usuário desconectado.
func NewContext
A função NewContext inicia uma instância do servidor da API de desenvolvimento e retorna um contexto que direcionará todas as chamadas da API para esse servidor, bem como uma chamada de fechamento quando o contexto não for mais necessário.
Instância
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)
}
A função Instance representa uma instância em execução do servidor da API de desenvolvimento.
func NewInstance
A função NewInstance inicia uma instância em execução do api_server.py que pode ser usada para vários contextos de teste que delegam todas as chamadas da App Engine API a essa instância. Se o valor de "opts" for nulo, serão usados os valores padrão.
Opções
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
}
A função Options é usada para especificar opções ao criar uma instância.