インストール
Go をインストールする
Go 環境変数を設定します (パスは異なる場合があります)。
export GOPATH=~/gopath
export PATH=$PATH:$GOPATH/bin
Go 用の Google App Engine SDK をダウンロードする
Google App Engine の環境変数を設定します(パスは異なる場合があります)。
export APPENGINE_SDK=$HOME/appengine
export PATH=$PATH:$APPENGINE_SDK
ディレクトリappengine
とディレクトリをappengine_internal
シンボリック リンクします。
ln -s $APPENGINE_SDK/goroot/src/pkg/appengine $GOPATH/src/pkg/
ln -s $APPENGINE_SDK/goroot/src/pkg/appengine_internal $GOPATH/src/pkg/
appenginetestingをインストールする
go get github.com/mzimmerman/appenginetesting
筆記試験
appengintestingは偽物を提供しますappengine.Context
。舞台裏 Python 開発サーバーを起動し、それを介してリクエストを実行するため、テストは少し遅くなる可能性があります(ミリ秒ではなく秒単位)。テストで使用するには、次のように記述します
import "github.com/mzimmerman/appenginetesting"
...
c := appenginetesting.NewContext(nil)
その後c
、実際の を使用するのと同じように使用できますappengine.Context
。これはテスト ファイルでは機能しますが、呼び出して作成したコンテキストでは機能しません。appengine.NewContext(r)
私がgaegoで使用している戦略は、の代わりにカスタムパッケージからコンテキストをインポートすることですappengine
. これによりappengine.Context
、ビルドが App Engine 用の場合は を使用appenginetesting.Context
し、ビルドがテスト スーツ用の場合は を使用できます。
次のビルド フラグを設定します。
- context_appengine.go
// +build appengine
- context_testing.go
// +build !appengine
コンパイラは、ロードするファイルを決定します。例。この技術はゴリラから採用されました
次に、からインポートする代わりにappengine
、パッケージからインポートしますEg
import (
github.com/gaego/context
)
..
c := context.NewContext(r)
..
最後に言及する必要があるのは、明示的にコンテキストを閉じる必要があるということです。そうしないと、python プロセスが引き続き実行されます。次のように呼び出して、プロセスを終了します。
defer c.Close()
その他の例については、次を参照してください。
context_test.go
recorder_test.go
編集:上田卓也が最新の SDK で動作するブランチを作成しました
Edit2: Joshua Marshは、最新の SDK と互換性のあるフォークを維持しています
Edit3: Matt Zimmermanは、標準の aetest パッケージ (ログイン/ログアウト & タスク キュー) に追加機能を備えたフォークを維持しています。