概要
datastore.NewClient は実在の projectId を要求する
- context は aetest.NewContext を使う
- datastore client はテストでも使い方は同じ
- projectId が非実在のものだとエラーになる
- 実際の datastore には書き込まれていないのは確認済み
--> テストでも実在の ProjectId を指定する必要がある
少し調べた範囲ではこれに関する情報が見つけられなかったため、あくまで推論。情報があれば教えて下さい。
コード
func NewClient(ctx context.Context, projectId string) (*datastore.Client, error){
return datastore.NewClient(ctx, ProjectId)
}
func TestDatastore(t *testing.T) {
ctx, done, err := aetest.NewContext()
if err != nil {
t.Fatal(err)
}
defer done()
// NG
if c, err = NewClient(ctx, "dummy-project"); err != nil {
t.Fatal(err)
}
// OK
if c, err = NewClient(ctx, "real-project-12345"); err != nil {
t.Fatal(err)
}
// ...
}
追記
luci/gae というのを使うと高速にできるようです