使用強一致性資料儲存建立上下文
在使用 Google App Engine 的測試庫進行測試時,最終一致性的挑戰將以與生產相同的方式呈現。因此,為了將某些內容寫入資料儲存區以測試檢索,你必須建立一個強烈一致的上下文。
type Foo struct {
Bar string
}
func TestDataStore(t *testing.T) {
inst, err := aetest.NewInstance(
&aetest.Options{StronglyConsistentDatastore: true})
if err != nil {
t.Fatal(err)
}
defer inst.Close()
req, err := inst.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
ctx := appengine.NewContext(req)
foo := &Foo{ Bar: "baz" }
key, err := key := datastore.NewIncompleteKey(context, "Foo", nil)
if _, err := datastore.Put(context, key, details); err != nil {
t.Fatalf(err)
}
query := datastore.NewQuery("Foo").Filter("Bar =", "baz")
for iterator := query.Run(ctx); ; {
item := &Foo{}
err := iterator.Next(item)
if err == datastore.Done {
t.Fatalf("No results")
}
if err != nil {
t.Fatal(err)
}
if foo.Bar != item.Bar {
t.Fatal("Wrong result returned.")
}
}
}