使用强一致性数据存储创建上下文
在使用 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.")
}
}
}