在 Google App Engine 测试中查询数据存储区实体
在测试利用数据存储区查询功能的代码时,开发人员可能会遇到失败,尽管其中实现了功能该应用程序。这种差异是由大多数数据存储查询的最终一致性性质引起的。
在提供的代码中,使用 Put() 方法将实体插入到数据存储中,然后使用 GetAll() 进行查询以检索该实体。但是,由于数据存储区施加的延迟模拟,查询不会返回任何结果。为了解决这个问题,可以采取两种方法:
示例(强一致性数据存储):
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") } }
通过使用任一方法,测试都可以准确反映生产环境中查询的行为。
以上是如何在 Google App Engine 测试中可靠地查询数据存储实体?的详细内容。更多信息请关注PHP中文网其他相关文章!