パッケージ 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
Login で指定したリクエストは、特定のユーザーが発行したものとして扱われます。
func Logout
Logout で指定したリクエストは、ログアウト済みのユーザーが発行したものとして扱われます。
func NewContext
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
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 は、インスタンスの作成時にオプションを指定するために使用します。