Menyiasat Entiti Datastore dalam Ujian Enjin Apl Google
Apabila menguji kod yang memanfaatkan keupayaan pertanyaan Datastore, pembangun mungkin menghadapi kegagalan walaupun pelaksanaan berfungsi dalam permohonan itu. Percanggahan ini timbul daripada sifat akhirnya konsisten kebanyakan pertanyaan Datastore.
Dalam kod yang disediakan, entiti dimasukkan ke dalam Datastore menggunakan kaedah Put(), diikuti dengan pertanyaan untuk mendapatkan semula menggunakan GetAll(). Walau bagaimanapun, pertanyaan tidak mengembalikan hasil disebabkan oleh simulasi kependaman yang dikenakan oleh Datastore. Untuk menyelesaikan masalah ini, dua pendekatan boleh diambil:
Contoh (Storngly Consistent Datastore):
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") } }
Dengan menggunakan mana-mana pendekatan, ujian boleh mencerminkan dengan tepat tingkah laku pertanyaan dalam persekitaran pengeluaran.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Entiti Datastore dengan Aman dalam Ujian Enjin Apl Google?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!