在Google App Engine 測試中查詢資料儲存區實體
在測試利用資料儲存區查詢功能的程式碼時,開發人員可能會遇到失敗,儘管其中實現了功能該應用程式。這種差異是由大多數資料儲存查詢的最終一致性性質所引起的。
在提供的程式碼中,使用 Put() 方法將實體插入資料儲存中,然後使用 GetAll() 進行查詢以檢索該實體。但是,由於資料儲存區施加的延遲模擬,查詢不會傳回任何結果。為了解決這個問題,可以採取兩種方法:
範例(強一致性資料儲存):
import ( "context" "cloud.google.com/go/datastore" "github.com/GoogleCloudPlatform/go-cloud-testing-gce" ) func TestEntityQueryStronglyConsistent(t *testing.T) { ctx := context.Background() c, err := aetest.NewContext(ctx, aetest.Options{ StronglyConsistentDatastore: true, }) if err != nil { t.Fatal(err) } defer c.Close() key := datastore.NewIncompleteKey(c, "Entity", nil) key, err = datastore.Put(c, key, &Entity{Value: "test"}) if err != nil { t.Fatal(err) } q := datastore.NewQuery("Entity").Filter("Value =", "test") var entities []Entity keys, err := q.GetAll(c, &entities) if err != nil { t.Fatal(err) } if len(keys) == 0 { t.Error("No keys found in query") } if len(entities) == 0 { t.Error("No entities found in query") } }
透過使用任一方法,測試都可以準確反映生產環境中查詢的行為。
以上是如何在 Google App Engine 測試中可靠地查詢資料儲存實體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!