Rumah >pembangunan bahagian belakang >Golang >Mengapa Pertanyaan Google App Engine Datastore Saya Gagal Mendapatkan Entiti Yang Baru Ditambah dalam Ujian?
Google App Engine Datastore - Persistent Query
Dalam konteks ujian, mengakses data dalam Google App Engine Datastore melalui pertanyaan boleh menjadi mencabar. Walaupun kefungsian yang kelihatan berjaya dalam aplikasi, ujian selalunya gagal untuk mendapatkan semula data yang dijangkakan.
Satu sebab yang berpotensi untuk percanggahan ini terletak pada ketekalan pertanyaan stor data yang ditangguhkan. Tidak seperti pertanyaan nenek moyang, kebanyakan pertanyaan memerlukan sedikit masa untuk mencerminkan entiti yang baru ditambah. Baris "Menggunakan semua urus niaga yang belum selesai dan menyimpan stor data" menunjukkan bahawa rangka kerja ujian sedang menggunakan urus niaga beratur selepas entiti telah ditambahkan dan ditanya.
Akibatnya, pertanyaan dijalankan serta-merta selepas penciptaan entiti mungkin tidak menangkap ini perubahan yang belum selesai. Untuk menangani perkara ini, terdapat beberapa pilihan:
Berikut ialah versi ubah suai kod ujian anda menggunakan pendekatan tertunda:
type Entity struct { Value string } func TestEntityQuery(t *testing.T) { c, err := aetest.NewContext(nil) 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) } // Delay to allow for consistency time.Sleep(100 * time.Millisecond) 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 menggabungkan langkah-langkah ini, ujian boleh mencerminkan dengan tepat gelagat pertanyaan stor data dan memastikan entiti pendua tidak secara tidak sengaja dicipta.
Atas ialah kandungan terperinci Mengapa Pertanyaan Google App Engine Datastore Saya Gagal Mendapatkan Entiti Yang Baru Ditambah dalam Ujian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!