パッケージ google.golang.org/appengine/aetest(v1.6.8)

パッケージ aetest には、テストで使用する dev_appserver を実行するための API が用意されています。

テストファイルの例:

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

環境変数 APPENGINE_DEV_APPSERVER では、使用する実行可能ファイル dev_appserver.py の場所を指定します。設定しなかった場合は、システム PATH が参照されます。

変数

PrepareDevAppserver

var PrepareDevAppserver func() error

PrepareDevAppserver は、設定すると、dev_appserver.py を起動するたびにその起動前に呼び出されるフックです。aetest.NewContext を goapp テストツールから呼び出す場合、このフックは不要です。

関数

func Login

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

Login で指定したリクエストは、特定のユーザーが発行したものとして扱われます。

func Logout

func Logout(req *http.Request)

Logout で指定したリクエストは、ログアウト済みのユーザーが発行したものとして扱われます。

func NewContext

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

NewContext によって、開発 API サーバーのインスタンスが起動され、コンテキスト(これにより、すべての API 呼び出しがそのサーバーにルーティングされる)とクロージャ(このコンテキストが必要なくなった場合に呼び出す必要がある)が返されます。

インスタンス

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 は、開発 API サーバーの実行中のインスタンスを表します。

func NewInstance

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

NewInstance を使用すると、api_server.py のインスタンスが起動および実行されます。このインスタンスは複数のテスト コンテキストに使用でき、すべての App Engine API 呼び出しを委任できます。opts が nil の場合、デフォルト値が使用されます。

オプション

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 は、インスタンスの作成時にオプションを指定するために使用します。