Heim >Backend-Entwicklung >Golang >Warum können meine Google App Engine-Datenspeicherabfragen neu hinzugefügte Entitäten in Tests nicht abrufen?
Google App Engine Datastore – Persistente Abfragen
Im Kontext von Tests kann der Zugriff auf Daten im Google App Engine Datastore über Abfragen eine Herausforderung darstellen. Trotz scheinbar erfolgreicher Funktionalität in der Anwendung gelingt es Tests häufig nicht, die erwarteten Daten abzurufen.
Ein möglicher Grund für diese Diskrepanz liegt in der verzögerten Konsistenz von Datenspeicherabfragen. Im Gegensatz zu Vorgängerabfragen benötigen die meisten Abfragen einige Zeit, um neu hinzugefügte Entitäten widerzuspiegeln. Die Zeile „Alle ausstehenden Transaktionen anwenden und den Datenspeicher speichern“ zeigt an, dass das Test-Framework in der Warteschlange befindliche Transaktionen anwendet, nachdem die Entität hinzugefügt und abgefragt wurde.
Daher werden diese bei Abfragen, die unmittelbar nach der Entitätserstellung ausgeführt werden, möglicherweise nicht erfasst ausstehende Änderungen. Um dies zu beheben, gibt es mehrere Optionen:
Hier ist eine modifizierte Version Ihres Testcodes mit dem verzögerten Ansatz:
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") } }
Durch die Einbeziehung dieser Maßnahmen können Tests eine genaue Wiedergabe ermöglichen das Verhalten von Datenspeicherabfragen und stellen Sie sicher, dass nicht versehentlich doppelte Entitäten erstellt werden.
Das obige ist der detaillierte Inhalt vonWarum können meine Google App Engine-Datenspeicherabfragen neu hinzugefügte Entitäten in Tests nicht abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!