Interrogation des entités de la banque de données dans les tests Google App Engine
Lors du test du code qui exploite les capacités de requête de la banque de données, les développeurs peuvent rencontrer des échecs malgré les implémentations fonctionnelles au sein la demande. Cet écart résulte de la nature finalement cohérente de la plupart des requêtes du Datastore.
Dans le code fourni, une entité est insérée dans le Datastore à l'aide de la méthode Put(), suivie d'une requête pour la récupérer à l'aide de GetAll(). Cependant, la requête ne renvoie aucun résultat en raison de la simulation de latence imposée par le Datastore. Pour résoudre ce problème, deux approches peuvent être adoptées :
Exemple (banque de données fortement cohérente) :
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") } }
En utilisant l'une ou l'autre approche, les tests peuvent refléter avec précision le comportement des requêtes dans l'environnement de production.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!