Heim > Backend-Entwicklung > Golang > Wie kann ich Datenspeicherabfragen in Google App Engine zuverlässig testen?

Wie kann ich Datenspeicherabfragen in Google App Engine zuverlässig testen?

Susan Sarandon
Freigeben: 2024-12-07 15:46:15
Original
655 Leute haben es durchsucht

How Can I Reliably Test Datastore Queries in Google App Engine?

Testen von Abfragen im Google App Engine-Datenspeicher

Um doppelte Entitäten im Datenspeicher zu verhindern, stoßen Sie beim Testen einer Abfrage auf Schwierigkeiten Funktion, die Einzigartigkeit gewährleisten muss. Obwohl die Funktion in der Anwendung korrekt ausgeführt wird, schlagen Tests wiederholt fehl.

Bei der Untersuchung des Problems wurde festgestellt, dass der Zugriff auf Datenspeicherdaten über Abfragen im Testkontext nicht möglich ist. Diese Unfähigkeit ist auf die Tatsache zurückzuführen, dass Datastore-Transaktionen nicht sofort festgeschrieben werden, was zu inkonsistenten Abfrageergebnissen führt.

Durch die Einführung einer Verzögerung von mindestens 100 ms zwischen den Vorgängen datastore.Put() und q.GetAll() im Wenn der Testfall bereitgestellt wird, werden die Tests bestanden. Dies liegt daran, dass die Verzögerung das Festschreiben der Transaktion ermöglicht und so die Datenkonsistenz gewährleistet.

Um eine starke Konsistenz sicherzustellen, ohne auf Verzögerungen angewiesen zu sein, können Sie beim Erstellen des Testkontexts die Option StronglyConsistentDatastore: true verwenden. Auf diese Weise sind alle Abfragen stark konsistent und stellen sicher, dass nach Schreibvorgängen sofort auf Daten zugegriffen werden kann.

Hier ist eine aktualisierte Version Ihres Testfalls mit der Option „StronglyConsistentDatastore“:

type Entity struct {
    Value string
}

func TestEntityQuery(t *testing.T) {
    c, err := aetest.NewContext(nil)
    if err != nil {
        t.Fatal(err)
    }
    defer c.Close()

    c.StronglyConsistentDatastore = true

    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")
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Datenspeicherabfragen in Google App Engine zuverlässig testen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage